[翻译]ACMer 2013 Daily Training- 1st Mar for 11x&&12x

[A] An Antiarithmetic permutation

我们定义n 的一个排列(permutation)是把0,1,2,......, n-1按任意顺序排列。例如:n=5, 则(0,1,2,4,3) 是一种排列方式,而(2,0,1,4,3)是另一种排列方式。

一个排列p如果找不到长度大于2的子序列,且这子序列成等差级数,则被称为「反运算(antiarithmetic)」。也就是说,找不到三个序列指标i, j, k( 0 <= i < j < k < n)使得(p i, p j , p k)为一个等差级数。

例如:序列(0,5,4,3,1,2)为n=6的一个排列,且这个排列不是「反运算」。因为(0,1,2)这个子序列形成一等差级数,另外(5,4,3)形成另一个等差级数。

但是(2,0,1,4,3)则是n=5 的「反运算」排列,因为找不到长度大于2 的子序列,且这子序列成等差级数。

给你n,你的任务是产生一个n 的「反运算」排列(如果不只一种,那任何一个都可以)。

Input

输入含有多组测试资料。每组测试资料一列,含有一个整数n(3 <= n <= 10000),当n=0时代表输入结束,请参考Sample Input。

Output

对每组测试资料输出一列,首先是n,接下来有一个冒号,然后有n个整数。这n个整数为n的一个排列(如果不只一种排列符合,那任何一种都可以)。输出格式请参考Sample Output。

Sample InputSample Output
3
5
6
0
3: 0 2 1 
5: 2 0 1 4 3
6: 2 4 3 5 0 1

[D] ID Codes

虽然慢了一个世纪,在2048年的时候,老大时代终究还是来了!为了管理这许多的公民,而且为了可以在法律上的长期计数。所以政府决定了一个极端的方法---所有居民都有一个超微小电脑晶片殖在他们的左手脕上。这个电脑将包含这个居民的所有个人资讯并且它也是一个小型发射机,将人们的行动记录在一个中央电脑中。

每台电脑的本质元件上都将有一个唯一的识别码。包含有最多50个字元的26个小写字母。对任一个字元的选择都是随意的。为了使压印这些识别码到晶片中的复杂方法简化一些,所以对不同制造者都将分配到不同区段的英文字,并用来产生新码。因此每选择一组英文字,在他换到其他组英文字之前,是可以推论出所有可能的码。例如,如果决定的一组英文字刚好包含3个a,2个b, 1个c, 那么在允许的60个可能的编码中的三个如下所示:

      abaabc
      abaacb
      ababac

这三个码按英文字母顺序依序印出,而且在全部可能产生的码当中是连续的。

现在你的任务就是要写一个程序来帮忙识别码的发行。你的程式将接受一系列不超50个小写字母(有可能会重覆)而且印出他的下一个码。假如是最后一个码,也就是没有下一个,就要印出"No Successor"

Input

每组测试资料1列,有1个识别码字串。字串"#"代表输入结束。

Output

每组测试资料输出一个字串,代表输入识别码的下一个识别码字串。如果此字串不存在,请输出"No Successor"

Sample Input

abaacb
cbbaa
a
cab
abcd
acbb
azyxwvutsrqpppooonnnmmmlllkkkjjjiiihhhgfedcccbbaaa
#

Sample Output

ababac
No Successor
No Successor
cba
abdc
babc
baaaabcccdefghhhiiijjjkkklllmmmnnnooopppqrstuvwxyz

[E] The Sultan's Successors

努比亚的苏丹没有子女,所以他要从一些有资格的继承者中挑选一个出来继承王位。他希望这个继承者是够聪明的,所以他决定用一个游戏来测试这些人。

他准备了一个西洋棋盘,上面的每个格子中均有一个1到99的数字。他又准备了8个皇后棋子。每位参加游戏的人必须将8个皇后放置到棋盘中,且各皇后彼此不可互相攻击。可以想像,这样有不只一种的放置方式。而苏丹要挑选的继承者就是那位可以放置8个皇后,并且放置皇后的8个位置中的数的和为最大的那一个人。

你的任务就是读入棋盘上的数,帮苏丹算出可以放置8个皇后的最大的和是多少。

Input

输入的第一列有一个整数k(k<= 20),代表以下有几组测试资料(就是几个棋盘)。

每组测试资料有8列,每列有8个整数(介于0到99)。代表棋盘中格子的资料。请参考Sample Input。

Output

对每一组测试资料,输出可以放置8个皇后的最大的和是多少。输出长度为5,靠右对齐。请参考Sample Output。

Sample Input

2
 1 2 3 4 5 6 7 8
 9 10 11 12 13 14 15 16
17 18 19 20 21 22 23 24
25 26 27 28 29 30 31 32
33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48
48 50 51 52 53 54 55 56
57 58 59 60 61 62 63 64
99 92 53 74 69 76 87 98
 9 12 11 12 19 14 15 16
17 14 19 20 29 22 23 24
25 26 57 28 29 30 31 32
33 34 36 76 39 58 39 40
 1 42 43 44 85 46 47 48
58 60 71 82 53 34 55 56
57 58 39 90 61 32 23 44

Sample Output

  260
  429

[G] Babelfish

你刚刚搬到另一座城市,那里的居民说一种外国语言。还好,你有字典可以帮助你翻译。

Input

输入首先是字典的内容,最多不会超过100000列。每列包含2个单字(Word,全部小写且长度不会超过10个字元),第1个是英文,第2个是外国语言。接着有一空白列然后才是需要翻译的外国语言的单字(每个一列)。在字典中,没有任一个外国语言单字会出现超过1次。

请参考Sample Input

Output

请利用输入字典资料,将待翻译的外国语言单字翻成英语。如果在字典中找不到,请输出"eh"

参考Sample Output

Sample Input

dog ogday
cat atcay
pig igpay
froot ootfray
loops oopslay

atcay
ittenkay
oopslay

Sample Output

cat
eh
loops

[H] Where is the Marble?

Raju和Meena喜欢玩弹珠,他们有许多上面有号码的弹珠。一开始时,Raju按照弹珠上面的号码由小到大排成一列,然后Meena会要求Raju找出某个号码的第一颗弹珠所在的位置。她会算1...2...3...,如果Raju答对了,他就得1分,否则Meena得1分。玩了多次之后谁的得分多谁就赢了。今天你有机会扮演Raju的角色。由于你们都是很聪明的小孩,你会用电脑来计算,而Meena则写了一个程式来检查你花多少时间来回答所有的问题。

Input

输入含有多组测试资料,每组测试资料的第一列有2个正整数N、Q,N代表弹珠的数目,Q代表对于此组测试资料Meena问的问题的数目。接下来的N列每列有一个整数,代表这N个弹珠上的号码(未经排序)。在接下来的Q列每列有一个整数代表Meena所问的问题(球的号码)。所有输入的数字都不会大于10000,且没有负的。

当N=0, Q=0时代表输入结束。请参考Sample Input。

Output

对每组测试资料请先输出一列,这是第几组测试资料。对每组测试资料Meena所问的每个问题输出一列,输出格式如下其中之一:

  • x found at y 如果第一个号码为x的弹珠在位置y被发现(位置从1开始算)
  • x not found 如果找不到号码为x的弹珠

输出格式请参考Sample Output。

Sample InputSample Output
4 1
2
3
5
1
5
5 2
1
3
3
3
1
2
3
0 0
CASE# 1:
5 found at 4
CASE# 2:
2 not found
3 found at 3

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值