一、LocalMaxima
源文件: LocalMaxima.*
输入文件: LocalMaxima.in
输出文件: LocalMaxima.out
时限: 1S
给出一个排列,如果其中一个数比它前面的数都大,则称为“Local Maxima”。
现在问在一个随机给出的排列中,期望有多少个数为“Local Maxima”。
输入
一个正整数n,表示排列为1..n的一个排列。
输出
一个随机1..n的排列,会有多少个数为“Local Maxima”。答案四舍五入保留8位小数。
样例
LocalMaxima.in
2
LocalMaxima.out
1.50000000
样例解释
1,2排列一共有两种:1,2;2,1。前者两个数都为“Local Maxima”,后者仅有第一个数2为“Local Maxima”。
数据范围
对30%的数据,n<=10。
对80%的数据,n<=1,000,000。
对100%的数据,n<=2^31-1。
二、LongestRegularBracketsSequence
源程序
LongestRegularBracketsSequence.*
输入文件
LongestRegularBracketsSequence.in
输出文件
LongestRegularBracketsSequence.out
时限: 1S
对一个由(,),[,]括号组成的字符串,求出其中最常的括号匹配子串。
具体来说,满足如下条件的字符串成为括号匹配的字符串:
1. (),[]是括号匹配的字符串
2. 若A是括号匹配的串,则(A),[A]是括号匹配的字符串串。
3. 若A,B是括号匹配的字符串,则AB也是括号匹配的字符串。
例如:(),[],([]),()()都是括号匹配的字符串,而][,[(]),(]则不是。
字符串A的子串是指有A中连续若干个字符组成的字符串。
例如,A,B,C,ABC,CAB,ABCABC都是ABCABC的子串。空串是任何字符串的子串。
输入
输入一行,为一个仅由()[]组成的非空字符串。
输出
输出也仅有一行,为最长的括号匹配子串。若有相同长度的子串,输出位置靠前的子串。
样例:
LongestRegularBracketsSequence.in
([(][()]]()
LongestRegularBracketsSequence.out
[()]
LongestRegularBracketsSequence.in
())[]
LongestRegularBracketsSequence.out
()
数据范围:
对20%的数据,字符串长度<=100。
对50%的数据,字符串长度<=10,000。
对于100%的数据,字符串长度<=1,000,000。
三、MagicFingerprint
源程序: MagicFingerprint.c/cpp/pas
输入文件: MagicFingerprint.in
输出文件: MagicFingerprint.out
时限: 2 S
对于任意一个至少两位的正整数n,按如下方式定义magic(n):将n按十进制顺序写下来,依次对相邻两个数,写下差的绝对值。这样,得到了一个新数,去掉前导0,则定义为magic(n)。若n为一位数,则magic(n)=n。
例如:magic(5913)=482,magic(1198=081=81,magic(666)=00=0。
对任意一个数n,序列:n,magic(n),magic(maigc(n)),...迟早会变成一个一位数。最后的这个值称为数n的magic指纹。
例如,对于n=5913,我们得到序列:5913,482,46,2。所以5913的magic指纹为2。
若一个数的magic指纹为7,则认为这个数是个幸运数。
现在,给定A,B,计算出[A,B]中有多少个数是幸运数。
输入
输入两行,每行一个数。第一行是A,第二行表示B。
输出
输出[A,B]中有多少个数是幸运数。
样例
MagicFingerprint.in
1
9
MagicFingerprint.out
1
数据范围:
对于30%的数据,B<=10000。
对于100%的数据,0<A<=B<=1,000,000,000。
四、Olympic
源文件: Olympic.c/cpp/pas
输入文件: Olympic.in
输出文件: Olympic.out
时限: 依标程速度而定
奥运会正在如火如荼的进行着,奖牌榜上也有许多队伍需要排名。你需要选择三个整数Pg,Ps和Pb,分别表示每获得一块金、银、铜牌所对应得分。并且满足1000>=Pg>=Ps>=Pb>=1。队伍将依据他们获得的分数进行排序(高分在前)。现在,为了使你所在的队伍排名尽可能的靠前,由你来选择Pg,Ps和Pb。
输入
第一行一个整数n(1<=n<=15),表示有n支队伍进行排名。
以下n行,每行三个整数G,S,B(0<=G,S,B<=100000),表示每支队获得的金、银、铜牌个数。
输出
一行输出三个数Pg,Ps,Pb,中间用空格隔开。
Hint:
1.第一支队伍即为你所在的队伍。
2.相同分数下,你所在的队伍排名为最前。
3.若有多组解,则输出Pg最小的解,若仍有多组,则输出Ps最小的解,若还有多组解,输出Pb最小的解。
样例:
Olympic.in
3
1 1 1
0 1 2
2 1 0
Olympic.out
1 1 1
Olympic.in
3
0 3 0
0 0 4
3 0 0
Olympic.out
2 2 1
数据范围:
对于10%的数据,保证最优解的Pg<=10。
对于30%的数据,保证最优解的Pg<=100。