# 杰拉斯的博客

## [ACM_SMU_1104]最优矩阵连乘积

### 最优矩阵连乘积

Accepted: 10 Total Submit: 18
Time Limit: 1000ms Memony Limit: 32768KB

Ouput

(阅读全文…)

## [ACM实验六]ACM程序设计基础（4）

#### 实验项目：ACM程序设计基础(4) 实验目的：掌握C++程序设计基础。 实验要求：使用VC++6.0实现实验要求。 实验内容：

1.设有n个活动的集合E={1,2,…n}，其中每个活动都要求使用同一资源，如演讲会场等，而在同一时间内只有一个活动能使用这一资源。每个活动i都有一个要求使用该资源的起始时间Si和一个结束时间Fi，且Si<Fi，求出最多可以安排多少个活动使用该资源，并给出一个安排方案，如：

 i 1 2 3 4 5 6 7 8 9 10 11 Si 12 5 0 3 8 5 2 8 3 6 1 Fi 14 7 6 5 12 9 13 11 8 10 4

Sample Input
11 12 14 5 7 0 6 3 5 8 12 5 9 2 13 8 11 3 8 6 10 1 4
Sample Output
11 2 8 1 (4)
2.用KMP算法实现实验，输入两个只包含小写字母的字符串，判断第二个字符串是否是第一个字符串的子串，是则输出第二字符串在第一个字符串的起始位置，不是则输出NO。例如：

dsa

3. Crashing Balloon问题，见Crashing Balloon

(阅读全文…)

## [ACM_ZOJ_1003]Crashing Balloon

### Crashing Balloon

Time Limit: 2 Seconds Memory Limit: 65536 KB

#### Description

On every June 1st, the Children's Day, there will be a game named "crashing balloon" on TV. The rule is very simple. On the ground there are 100 labeled balloons, with the numbers 1 to 100. After the referee shouts "Let's go!" the two players, who each starts with a score of "1", race to crash the balloons by their feet and, at the same time, multiply their scores by the numbers written on the balloons they crash. After a minute, the little audiences are allowed to take the remaining balloons away, and each contestant reports his\her score, the product of the numbers on the balloons he\she's crashed. The unofficial winner is the player who announced the highest score.

Inevitably, though, disputes arise, and so the official winner is not determined until the disputes are resolved. The player who claims the lower score is entitled to challenge his\her opponent's score. The player with the lower score is presumed to have told the truth, because if he\she were to lie about his\her score, he\she would surely come up with a bigger better lie. The challenge is upheld if the player with the higher score has a score that cannot be achieved with balloons not crashed by the challenging player. So, if the challenge is successful, the player claiming the lower score wins.

So, for example, if one player claims 343 points and the other claims 49, then clearly the first player is lying; the only way to score 343 is by crashing balloons labeled 7 and 49, and the only way to score 49 is by crashing a balloon labeled 49. Since each of two scores requires crashing the balloon labeled 49, the one claiming 343 points is presumed to be lying.

On the other hand, if one player claims 162 points and the other claims 81, it is possible for both to be telling the truth (e.g. one crashes balloons 2, 3 and 27, while the other crashes balloon 81), so the challenge would not be upheld.

By the way, if the challenger made a mistake on calculating his/her score, then the challenge would not be upheld. For example, if one player claims 10001 points and the other claims 10003, then clearly none of them are telling the truth. In this case, the challenge would not be upheld.

Unfortunately, anyone who is willing to referee a game of crashing balloon is likely to get over-excited in the hot atmosphere that he\she could not reasonably be expected to perform the intricate calculations that refereeing requires. Hence the need for you, sober programmer, to provide a software solution.

#### Input

Pairs of unequal, positive numbers, with each pair on a single line, that are claimed scores from a game of crashing balloon.

#### Output

Numbers, one to a line, that are the winning scores, assuming that the player with the lower score always challenges the outcome.

(阅读全文…)

## [ACM实验五]ACM程序设计基础（3）

#### 实验项目：ACM程序设计基础(3) 实验目的：掌握C++程序设计基础。 实验要求：使用VC++6.0实现实验要求。 实验内容：

1.为了对信件保密，需要对信件进行加密，加密方法是每个字母加5，如A写成F，B写成G。输入一行加密的英文句子，输出其解密英文句子，例如：

（提示：getline 是一个函数，它可以接受用户的输入的字符，直到已达指定个数，或者用户输入了特定的字符。它的函数声明形式（函数原型）如下：
istream& getline(char line[], int size, char endchar = '\n');
char line[]： 就是一个字符数组，用户输入的内容将存入在该数组内。
int size : 最多接受几个字符？用户超过size的输入都将不被接受。
char endchar :当用户输入endchar指定的字符时，自动结束。默认是回车符。

2. 某售货员要到若干城市去推销商品，一直各城市之间的路程，他要选定一条从驻地出发，经过每个城市一遍，最后回到住地的路线，使总的路程最短。

3. Anagrams by Stack问题，见Anagrams by Stack

(阅读全文…)

## [ACM_HDU_1515]Anagrams by Stack

### Anagrams by Stack

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 614 Accepted Submission(s): 311

#### Description

How can anagrams result from sequences of stack operations? There are two sequences of stack operators which can convert TROT to TORT:

```[
i i i i o o o o
i o i i o o i o
]
```

where i stands for Push and o stands for Pop. Your program should, given pairs of words produce sequences of stack operations which convert the first word to the second.

A stack is a data storage and retrieval structure permitting two operations:

Push - to insert an item and
Pop - to retrieve the most recently pushed item
We will use the symbol i (in) for push and o (out) for pop operations for an initially empty stack of characters. Given an input word, some sequences of push and pop operations are valid in that every character of the word is both pushed and popped, and furthermore, no attempt is ever made to pop the empty stack. For example, if the word FOO is input, then the sequence:

i i o i o o is valid, but
i i o is not (it's too short), neither is
i i o o o i (there's an illegal pop of an empty stack)

Valid sequences yield rearrangements of the letters in an input word. For example, the input word FOO and the sequence i i o i o o produce the anagram OOF. So also would the sequence i i i o o o. You are to write a program to input pairs of words and output all the valid sequences of i and o which will produce the second member of each pair from the first.

#### Input

The input will consist of several lines of input. The first line of each pair of input lines is to be considered as a source word (which does not include the end-of-line character). The second line (again, not including the end-of-line character) of each pair is a target word. The end of input is marked by end of file.

#### Output

For each input pair, your program should produce a sorted list of valid sequences of i and o which produce the target word from the source word. Each list should be delimited by

```[
]
```

and the sequences should be printed in "dictionary order". Within each sequence, each i and o is followed by a single space and each sequence is terminated by a new line.

(阅读全文…)