[翻译]ACMer 2013 Daily Training- 13th Mar for 11x&&12x

[A] Cows and Cars

在某些电视节目中有比赛的游戏,参赛者被要求多扇门其中的一个门,门后有各种不同的礼物。现在你就是参赛者,你面临的挑战如下:在你面前有3扇门,其中2扇门之后各有一只牛,另一扇门之后则有你想要的礼物─1部车。在你选了一扇门但是还没打开之前,主持人会给你一个机会,他会打开一扇藏有牛的门(他绝不会开到藏有车的门,因为他知道车在哪里),然后问你要不要换另一扇门。你可以选择保持原来的选择,也可以改变你的选择到另一扇还没打开的门。

在这个例子中,如果你选择换,那你赢得车子的机率有2/3(很难相信吧!),因为有两种可能情况:

  1. 假如你一开始选择的门后是牛(这种情况有2/3的机会),那么你后来换的门后一定是车子,因为另一只牛的门已经被主持人打开了。
  2. 假如你一开始选的车子的门(这种情况有1/3的机会),那你换了之后一定是牛。

这个问题是上面比赛的一般化:

  • 牛的数目是可变的。
  • 车的数目是可变的(牛的数目+车的数目=门的数目)
  • 主持人打开的门的数目是可变的(记住:他绝不会开到藏有车的门)

你的任务是算出,如果选择换一扇门,赢得一部车的机率是多少。

Input

每组测试资料一列,含有3个整数:NCOWS NCARS NSHOW,分别代表牛的数目、车的数目、主持人打开的门的数目。其范围为:

1 <= NCOWS <= 10000 
1 <= NCARS <= 10000 
0 <= NSHOW < NCOWS

Output

对每组测试资料请输出一列,假如你选择换一扇门后赢得一部车的机率。输出到小数点后5位。

Sample InputSample Output
2 1 1
5 3 2
2000 2700 900
0.66667
0.52500
0.71056

[B] Connect the Campus

在Waterloo大学里有许多的建筑物正在兴建。学校雇用了建筑工人、水电工人以及一个程式设计师。程式设计师?不要怀疑,那个人就是你。你的任务就是要算出要建置校园网路需要用多少缆线。

每栋建筑物可以视为在XY平面上的一个点。连接2栋建筑物的网路线均为直线,且网路线为双向的。网路线可以自由的跨越,但是只有在建筑物的地方网路线才有接头。

学校给你一张校园的地图,上面有各建筑物的位置座标,以及一些已经存在于建筑物间的网路线。对那些已经存在的网路线,你不要去动它。你的任务是要架设新的网路线,使得所有的建筑物都可以藉由网路相连。当然,学校方面希望你新架设的网路线越短越好。

Input

输入含有多组测试资料。

每组测试资料的第一列有一个整数N(1 <= N <= 750),代表建筑物的数目(建筑物的编号从1到N)。接下来的N列每列有2个整数(介于-10000到10000之间),代表为这N栋建筑物的座标(不会有2栋不同的建筑物在同一个点上)。再接下来的一列有一个整数M(0 <= M <= 1000)代表已有M条网路线连接于建筑物之间。再接下来的M列每列有2个正整数代表某条已存在的网路线所连接的2栋建筑物编号。任2栋建筑物间最多只会有一条网路线连接。

请参考Sample Input。

Output

每组测试资料输出一列。含有一个浮点数(小数点后2位),代表你所新架设的网路线的长度,使得校园间各建筑物都可以网路连接,而且长度要最小。

Sample Input

4
103 104
104 100
104 103
100 100
1
4 2
4
0 0
0 1
1 0
1 1
2
1 2
3 4

Sample Output

4.41
1.00

[C] ClockHands

在一般的时钟上通常有两根指针:时针、分针。这个题目是告诉你几点几分,请你的程式回应时针和分针之间的角度。请注意:所有的角度请回应最小的正角度。例如:9:00 是90 度,不是-90 度,也不是270 度。 

Input

输入是一连串的时间,每个时间一行,以下列的格式出现: H:M 。

1<= H <= 12          00<= M <=59

如果时间是0:00 代表输入结束了。请注意:H 可能是1 或2 位数,M 则总是以2 位数出现. 。(也就是你在一般电子表上看到的模式。) 

Output

请输出对应输入时间的时针和分针间的最小正角度。此角度应该介于0 到180 度。每个输出单独一行。每个输出至小数点以下第三位。 

Sample Iutput

12:00 
9:00 
8:10 
0:00 

Sample Output

0.000 
90.000 
175.000

[D] The Closest Pair Problem

给你一些二维平面上的点的座标,请你告诉我其中2点间最近的距离是多少。

Input

输入包含好几组测试资料,每组的第1列有一个整数N(0 <= N <=10000),代表此组测试资料共有几个点。接下来的N列每列有2个数,分别代表代表某一个点的x和y座标。N=0时代表输入结束。座标的值均小于40000并且不会是负的数。

Output

对于每组测试资料,请输出2点间最小的距离(输出到小数点后4位)。如果任2点间的距离都不小于10000,请输出 INFINITY 

Sample input

3
0 0
10000 10000
20000 20000
5
0 2
6 67
43 71
39 107
189 140
0

Sample Output

INFINITY
36.2215

[E] Expressions

令X 表示正确的括号表示式。X 的内容为仅含'(' 和')' 的字串。定义如下:

  • 空字串属于X。
  • 假如A 属于X ,那么(A) 也属于X。
  • 假如A 和B 都属于X ,那么AB 也属于X。

例如:以下的字串都是正确的括号表示式(所以当然属于X)

()(())()

(()(()))

而以下的字串不是正确的括号表示式(所以当然不属于X)

(()))(()

())(()

令E 是一个正确的括号表示式(因此E 属于X)。

E 的长度为字串的长度。

而E 的深度D(E) 被定义如下:

               ì 0如果 E是空字串D(E)= í D(A)+1如果E = (A),并且 A属于               î max(D(A),D(B))如果 E = AB,并且A, B都属于 X

例如:“()(())()” 的长度是8 , 而深度为2 。

给你n 和d ,你的任务是找出长度为n,且深度为d 的所有正确的括号表示式共有多少个。

例如: n=6, d=2 共有以下3种正确的括号表示式。

(())() 
()(()) 
(()())

Input

每组测试资料一列,含有2 个整数n 和d(2 <= n <= 300,1 <= d <= 150)。

输入不会超过20 列,但可能含有空白列,你不用理会这些空白列。

Output

对每一组测试资料输出一列。长度为n,且深度为d 的所有正确的括号表示式共有多少个。

Sample InputSample Output
6 2
300 150
100 2
100 4
100 19
10 1
10 2
10 3
10 4
10 5
3
1
562949953421311
119430741619474209626016
10441348575948087788919740
1
15
18
7
1

[F] ShellSort

乌龟王国的乌龟总是一只一只叠在一起。唯一改变乌龟位置的方法为:一只乌龟爬出他原来的位置,然后往上爬到最上方。给你一堆乌龟原来排列的顺序,以及我们想要的乌龟的排列顺序,你的任务是按照先后次序列出出哪只乌龟需往上爬,使得可以产生所要的乌龟排列顺序,且爬的动作要发生最少。

Input

输入的第一列有一个整数,代表以下有多少组测试资料。每组测试资料的第一列有1个整数n (n<=200),代表乌龟的数目。接下来的n 列每列有一只乌龟的名字(乌龟名字均为唯一,且仅包含字元、空白、句点,长度不会超过80个字元),代表原来乌龟排列的顺序(由上到下)。再接下来的n 列每列也有一只乌龟的名字,代表我们想要的乌龟排列顺序(也是由上到下)。请参考Sample Input。

Output

对每组测试资料输出一序列乌龟的名字,每个名字一列,代表往上爬的乌龟顺序。这个顺序可以使输入中原来的乌龟顺序变成我们想要的乌龟顺序,且此序列越短越好。如果有不只一组解答,任何一组都可以。每组测试资料之后亦请输出一空白列,请参考Sample Output。

Sample InputSample Output
2
3
Yertle
Duke of Earl
Sir Lancelot
Duke of Earl
Yertle
Sir Lancelot
9
Yertle
Duke of Earl
Sir Lancelot
Elizabeth Windsor
Michael Eisner
Richard M. Nixon
Mr. Rogers
Ford Perfect
Mack
Yertle
Richard M. Nixon
Sir Lancelot
Duke of Earl
Elizabeth Windsor
Michael Eisner
Mr. Rogers
Ford Perfect
Mack
Duke of Earl

Sir Lancelot
Richard M. Nixon
Yertle

[G] Dice Throwing

投掷n 个一般的骰子(每个骰子有6面,分别有点数1到6点),点数总和至少x 的机率是多少?

Input

输入含有多组测试资料。每组测试资料一列,有2 个正整数n (1 <= n <= 24)和x(0 <= x < 150)。当n=x=0 时代表输入结束。

Output

对每一组测试资料输出一列,输出点数总和至少x 的机率是多少(请约分到最简分数)。所有的数字均可以64-bit 的整数表达。请参考Sample Output。

Sample InputSample Output
3 9
1 7
24 24
15 76
24 56
24 143
23 81
7 38
2 1
0 0
20/27
0
1
11703055/78364164096
789532654692658645/789730223053602816
25/4738381338321616896
1/2
55/46656
1

[H] Leading and Trailing

所有在程式设计已经有点经验的人都知道,当k很大时你无法完整的表达出n k。例如: C语言的函数 pow(123456,455)能够用double资料型态来表达,但是你却无法得到所有正确的数字。然而,若是能知道一些最左边(leading)和最右边(trailing)数字的话,也可稍微得到一些满足。

Input

输入的第一列有一个整数T(T < 1001),代表有几组测试资料。接下来的T列,每列有2个正整数n和k。n可以用32位元的整数表达,而k<10000001。

Output

每组测试资料输出一列,输出LLL...TTT的样式。其中LLL代表n k的最左边3个数字,TTT代表n k的最右边3个数字。例如123456 2 = 15241383936,所以你应该输出152...936。

你可以假设n k至少有6位数。

Sample InputSample Output
3
123456 1
123456 2
2100000056 67333
123...456
152...936
982...016



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值