这套题也太针对我了,他竟然在五道题里面出了两道数学,另外五道题里面还有四道题要用我经常搞点事情出来的字符串,要不是数据水完全苟不过300(昨天那个实习体育老师是睿智吧,热身训练差点让我腰伤复发,要是今天不幸290上操场估计以后就再也没有我写的文章了)另外和韩哥哥打的赌直接输了,这么多数学题也太适合他了,下次让他让我100分试试。(然而我忘了把程序拷回来了那现在只有思路了)
题目描述
有一种文档的加密方法,包含了下述的翻译步骤:输入包含了一个字符串C有n个小写字母,C=c1c2...cn,所有的字符都是不一样的。如果把第一个字符移到最后一个,我们就创造了一个新的字符串。我们把Ck定义为:ck+1ck+2....cnc1c2..ck,把原字符串定义为C0。 例如,C0=eldat时 C3=datel。
我们把所有的C0...Cn-1按照字典顺序排序得到一个字符表格。我们依次把每个字符串最后一个字符记入S,r定义为C0所在的位置。也许是一个魔术,我们可以通过S和r来确定原来那个C。
翻译的例子:
输入的C是datel
我们可以得到C0..Cn-1 datel ateld telda eldat ldate
按照字典顺序排列可得 ateld datel eldat ldate telda
于是,我们得到S为dltea,r为2,因为datel在第二个位置上。
任务 你的程序将输入S和r,并输出C。 可以假设这样的C一定存在。
输入格式:
输出格式:
输入样例#1:
dltea 2
输出样例#1:
datel
这题完全展现出我是个睿智,我看了这题30分钟完全想不通怎么做,开始还理解错题意,以为是已知C和r求S,后来实在是被操场的恐惧支配了不得已写了搜索,不过好像这题我50分,还可以接受,但是听韩哥哥讲了10秒钟我就觉得血亏。
这是开始排好序的字符串
ateld
datel
eldat
ldate
telda
首先因为我们知道所有字母且他们是排好序的,所以我们是知道第一列的,那我们也是知道最后一列的,第一列始终是跟在最后一列后面的,然后我们要求字典序第r,所以首先我们从第r开始d(找d后面的,后面照常)a t e l,原理也很简单,因为你原字符串是排好序的,第一个一定是第r行的首元素(解释的乱七八糟但大概就是这样了)
有条虫正准备吃一个M行N列的矩形状的巧克力,它先从左上角开始吃,一直吃完这一行,然后按顺时针方向转身,吃整列(最后一列),到达列尾时重复这个过程,即虫子再按顺时针方向转身,吃完最后一整行。随着这一吃巧克力过程的重复,最终将吃完整块巧克力。 编写程序,计算虫子吃完整块巧克力所需转身的次数。
输入格式:
输入数据的第一行且是唯一的一行包含两个整数M和N,其中2≤M,N≤100,两个整数之间用空格隔开,M代表行数,N代表列数。
输出格式:
输出数据的第一行且是唯一的一行应包含虫子吃完整块巧克力所需转身的次数。
输入样例#1:
2 3
输出样例#1:
2
这个数据范围真的是在诱惑我模拟啊,但是其实很简单,min(n*2-2,m*2-1)即可,像这样一个问题,当你的行数足够大后,列数就会变得无关紧要,例如列为1,行为10000,其实就只需要转一次就吃完了。
Wild Number是一个有数字和问号组成的字符串(例如36?1?8)。一个数字与一个Wild Number匹配,当且仅当它们长度相等且不是问号的位置上对应相等。例如365198匹配36?1?8,但360199,361028,36128都不匹配。
输入格式:
输入有相同长度的两行,第一行表示Wild Number,第二行一个整数X,X无前导零。数字长度在1-10之间。
输出格式:
输出大于X且匹配Wild Number的n位数有多少个。(n是Wild Number的长度。)
输入样例#1:
? 5
输出样例#1:
4
其实我也知道这题可以利用排列组合做但是我懒。而且数据较弱搜索并没有超时,反而只是错了一个点(很神秘)。排列组合大概就是:假如在最前面的这一位大于另外一个字符串上相应的一位,答案后面加上10^(k-1),k为?个数,假如小于那有请下一位选手,假如等于就再递归看下一位(其实并不知道他们是不是这么想的反正应该大概是这样吧)。搜索就很简单了(剪枝失败的我呜呜呜),首先把确定的位赋上,枚举不确定位最后判断是否可行,这里可以加一个判断半路上合不合法(诶这样不就是排列组合了吗,然而我加失败了只好真正的爆搜),我自己打了十个?进去再打了10^9,瞬间爆炸,当时以为这题完了但数据救人。
一串由长长的数字组成的电话号码通常很难记忆。为了方便记忆,有种方法是用单词来方便记忆。例如用“Three Tens”来记忆电话3-10-10-10。 电话号码的标准形式是七位数字,中间用连字号分成前三个和后四个数字(例如:888-1200)。电话号码可以用字母来表示。以下是字母与数字的对应: A,B和C对应2 D,E和F对应3 G,H和I对应4 J,K和L对应5 M,N和O对应6 P,R和S对应7 T,U和V对应8 W,X和Y对应9 你会发现其中没有字母Q和Z。电话中的连字号是可以忽略。例如TUT-GLOP的标准形式是888-4567,310-GINO的标准形式是310-4466,3-10-10-10的标准形式是310-1010。 如果两个电话号码的标准形式是一样的,那么这两个电话号码就是一样的。 现在有一本电话簿,请从中找出哪些电话号码是重复的。
输入格式:
第一行一个正整数N,表示有多少个电话号码。 以下N行,每行一个电话号码,电话号码由数字、大写字母(除Q、Z)和连字符组成。电话号码长度不会超过1000。所有电话号码都合法。
输出格式:
将所有重复的电话号码按字典序以标准形式输出,并且在每个电话号码后跟一个整数,表示该电话号码共出现了多少次,电话号码和整数间用一个空格隔开。不要输出多余空行。 如果没有重复的电话号码,则输出:“No duplicates.”
输入样例#1:
3 TUT-GLOP 3-10-10-10 310-1010
输出样例#1:
310-1010 2
这题坑很多但我还不知道,总之先都弄成只有数字快排然后再判断吧,听说陈先生利用优先队列a了,gyc弄了半天桶排失败,这题我只有40,令人疑惑。
众所周知,一只足球队由11球员组成,其中有一名守门员和一名队长。
现在,有22人组成的一个候选名单,从中要选出11人参加比赛。选拔规则如下:
首先提供一个阵型,例如,4-4-2。第一个4表示有4名后卫,第二个4表示有4名中场,第三个2表示有2名前锋。当然,还有一个位置就是留给守门员的。
每个人都有自己唯一能打的位置(前锋、中场、后卫、守门员)。在每个位置上,以球员的编号为关键字,从小到大依次选取。
选出球队后还要选出队长。队长是球队中参加比赛次数最多的球员。如果有并列,取编号较大的球员做队长。
输入格式:
前22行每行按如下格式表示出一名球员的信息: Number Name Role year1-year’1 year2-year’2 … 整数Number(<=100)是该球员编号。字符串Name(length<=20)是该球员名字。字符Role是该球员所能打的位置(S前锋、M中场、D后卫、G守门员)。每一对yeari-year’i(yeari<=year’i) 表示该球员效力的时间段,例如2001-2002表示该球员效力了两年2001年和2002年。至少有1对年份,最多20对年份。年份是一个四位数。同一个年份不会出现在两对年份中。球员的编号在球队中是唯一的。 第23行给出一个阵型,例如4-4-2。保证阵型有且仅有3个正整数组成,且和等于10。例如,4-3-2-1是不合法的。
输出格式:
输出选出的11名球员,每一行包括球员编号,姓名,场上所打位置。之间用一个空格隔开。球员按守门员、后卫、中场、前锋的顺序排序,相同位置按编号从小到大排序。如果一名球员是队长,那么无论他打什么位置,都放在序列的第一个。如果无法找出11个满足条件的球员,输出“IMPOSSIBLE TO ARRANGE”。
输入样例#1:
9 PlayerA M 2000-2001 2003-2006 2 PlayerB M 2004-2006 10 PlayerC D 2001-2005 1 PlayerD D 2000-2001 2002-2004 11 PlayerE S 2003-2006 8 PlayerF M 2005-2006 22 PlayerG S 2005-2006 25 PlayerH G 2000-2001 2002-2003 2005-2006 6 PlayerI D 2003-2006 26 PlayerJ D 2003-2004 2000-2001 18 PlayerK M 2003-2004 19 PlayerL M 2000-2001 2003-2006 7 PlayerM S 2003-2006 1999-2001 21 PlayerN S 2003-2006 13 PlayerO S 2005-2006 15 PlayerP G 2001-2006 14 PlayerQ D 2003-2004 5 PlayerR S 2000-2005 20 PlayerS G 2000-2002 2003-2003 12 PlayerT M 2004-2005 3 PlayerU D 2000-2005 4 PlayerZ M 2001-2004 4-4-2
输出样例#1:
7 PlayerM S 15 PlayerP G 1 PlayerD D 3 PlayerU D 6 PlayerI D 10 PlayerC D 2 PlayerB M 4 PlayerZ M 8 PlayerF M 9 PlayerA M 5 PlayerR S
做这道题的时候我心态爆炸了,原因是韩哥哥跟我说这道题“hen you ling xing”,我想了半小时哪里有灵性(本来也没什么时间写了),最后只能打了impossible骗分(还自作聪明加特判少了5分),结束后我问韩哥哥这题到底哪有灵性,他说“这不就是个大模拟,我说这题是零七年的”,DaRK52,遂卒。
那么正经讲这题我可能会利用并查集吧,就是把每个年份单开,然后后卫前锋守门员什么的全部加入集合,最后看存不存在集合符合条件吧(看到这个足球队就想到zbn他们都交接给高二了,我也快了呜呜呜)