
Sicily
文章平均质量分 69
Ederick
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Sicily 1083. Networking
最小生成树,题目的Input中有各个细节的说明,按部就班完成即可。 Run Time: 0.01secRun Memory: 304KB Code length: 1294Bytes SubmitTime: 2012-01-12 12:11:41 // Problem#: 1083// Submission#: 1190010// The source code is原创 2012-02-04 16:03:51 · 706 阅读 · 0 评论 -
Sicily 1194. Message Flood
很早就碰到的一道题,结果纠结了真心久,当时什么都不会:STL不会,快排不会,二分查找不会,当时根本就拿这道题没有办法。后来才发现这道题其实挺简单的。 常见方法大概有两种,一是快排后二分查找,二是用set来做。时间消耗上两者差别不大,前者看起来较有技术含量,后者代码简单易懂,这里贴出后者的代码。Run Time: 0.26sec Run Memory: 1368KB Code le原创 2012-02-05 23:23:44 · 888 阅读 · 0 评论 -
Sicily 1199. GCD Description
题目的意思是,给出两个数N、M,问有多少个数X,使得gcd(X,N)>= M,其中1=M,问题就转化为有多少个所以,首先需要找出所有符合要求的Y的值,就是N中大于等于M值的因数;然后将所有的N/Y的欧拉函数值相加,就是所求。另外要注意一些特殊情况,N这四种情况,结果分别是0,1,N,N,这些都是易于推敲的。 另:在欧拉函数中,若是使用int类型,应该先除后乘,否则会溢出。 Run原创 2012-02-05 23:28:14 · 658 阅读 · 0 评论 -
Sicily 1024. Magic Island
最开始时,是在BBS看见有人对这道题表示愤慨,全文如下: “这道蛋疼题主要是求单源点到其他点最远距离。哥看到它第一印象就想到用dijkstra直接爆它,没多想用二维数组存储方式就很快写完了,恶心的是爆内存了。回头看下题目数据,就果断采用邻接表,想这次该行了吧,结果妈的又TLE。这时哥开始萎了,爬起来最后一次,采用优先队列+dijkstra,终于过了,消耗了哥多少精子,生活不容易。”后面原创 2012-02-04 11:44:59 · 1264 阅读 · 0 评论 -
Sicily 1157. The hardest problem
真有点被唬住了……貌似现在32位计算机上的int和long都是4个字节,也就是32位,这道题直接做就好……Run Time: 0sec Run Memory: 312KB Code length: 321Bytes SubmitTime: 20原创 2012-02-04 11:47:04 · 731 阅读 · 0 评论 -
Sicily 1063. Who's the Boss
讲的是一个薪水和身高的问题。如果A的薪水和身高都比B高,那么A就是B的上司;进一步地,如果A是比B的薪水高的人中薪水最少的,并且A的身高至少和B一样高,那么A就是B的直接上司。 我的策略是,首先将所有人按薪水从少到多排好序,然后依次往上检索,找到一个身高大于等于当前身高的人,那么这个人就是当前人的直接上司,下属人数是原有下属人数加上当前人的下属人数之和再加1(即当前人)。每个人都原创 2012-02-04 16:01:11 · 2175 阅读 · 2 评论 -
Sicily 1155. Can I Post the lette
典型的图遍历题,任何相关算法都可以解决,我使用的是最基本的宽搜。Run Time: 0secRun Memory: 312KBCode length: 965BytesSubmitTime: 2011-12-24 11:19:47// Problem#: 1155// Submission#: 1120671// The source code is licensed un原创 2012-02-05 23:13:11 · 1085 阅读 · 0 评论 -
Sicily 1006. Team Rankings
光是看明白题目就得耗费不少精力,实质上就是求出ABCDE的所有排列(120个)中,与给出的n个排列中,所有字母的相对关系(10个)相异程度最低的那个。那么首先就是找出这120个排列,然后进行比较就可以了,取相异程度最小的那个输出就可以了。Run Time: 0.01secRun Memory: 312KBCode length: 1065BytesSubmitTime: 2011-原创 2012-02-04 11:44:20 · 1431 阅读 · 0 评论 -
Sicily 1639. Run Length Encoding
相信无论是谁看了都觉得是水题的一道题,但事实上我生生RF(极度少见的错误类型)了3次,原因在于我是先逐步构造字符串再更新字符串长度的,(怀疑)数据可能会出现longlong类型个数的字符,此时我使用的string构造函数就会RF。解决这个问题后就出现了PE,发现原来还有空字符串这种情况(题目中根本找不到半点提醒啊),结果是空字符串输入时还要输出个空行……Run Time: 0sec原创 2012-02-04 11:45:29 · 874 阅读 · 0 评论 -
Sicily 1034. Forest
要明确的是这是一个森林,存在很多棵树,我们需要判断输入是否满足产生多颗树的要求,然后再输出森林的深度和宽度。这题有一些陷阱很容易让人判断出错,即使我AC后在写这个解题报告时,也发现了我的代码存在漏洞,可见出题者也没有考虑到一些特殊情况。我最终修改后的的方法是:首先把所有的根找出来,然后利用宽度优先检索对每一棵树进行分层遍历,并跟踪记录层数和最大的每层数目,作为森林的深度和宽度。遍历过程中,若发原创 2012-02-04 11:46:41 · 1038 阅读 · 0 评论 -
Sicily 1146. 采药
动态规划中的背包问题中的01背包,状态转移方程是dp[i][j]=max(dp[i-1][j],dp[i-1][j-ti]+vi),理解为在j时间内,前i棵草药中的最大总价值,等于不采第i棵草药时的总价值和采第i棵草药的总价值,这两者中的较大者。前者由于不采第i棵草药,时间仍然是j;后者由于采了第i棵草药,时间只剩下j-ti(ti表示采第i棵草药需要花费的时间),但总价值多了vi(vi表示第i棵草原创 2012-02-04 11:46:54 · 830 阅读 · 0 评论 -
Sicily 1093. Air Express
没什么好说的,利用分支结构进行判断就好。Run Time: 0secRun Memory: 312KB Code length: 2062Bytes SubmitTime: 2011-06-10 15:31:05// Problem#: 1093// Submission#: 797147// The source code is licensed under Creati原创 2012-02-04 16:17:43 · 1351 阅读 · 0 评论 -
Sicily 1027. MJ, Nowhere to Hide
找马甲……很简单的问题,用string+map就可以完美解决。Run Time: 0secRun Memory: 312KB Code length: 915Bytes SubmitTime: 2011-07-2310:28:16// Problem#: 1027// Submission#: 839489// The source code is licensed und原创 2012-02-04 16:24:05 · 1173 阅读 · 0 评论 -
Sicily 1003. Hit or Miss
循环队列的模拟。需要注意的是,每个人是轮流进行游戏的,而非同时行动,下一个玩家必须等上一个玩家完毕后(match与否皆可)才进行游戏。另外,判断不可赢的条件要注意下,原则上是所有玩家剩余牌数的最小公倍数,方便起见我直接设为13 * 52(没什么来由的)了。Run Time: 0secRun Memory: 312KBCode length: 1719BytesSubmit Time原创 2012-02-04 11:43:14 · 1366 阅读 · 0 评论 -
Sicily 1000. A-B
AC后:Sicily第一题,真正意义上的绝对水题,不解释; AC前:Sicily路程上的第一题,让无数第一次接触Sicily的人WA,CE,PE,TLE无数次而悲痛欲绝的题,你懂的…… Run Time: 0secRun Memory: 288KBCode length: 130BytesSubmit Time: 2011-01-06 23:13:05// Problem#原创 2012-02-04 11:42:34 · 1480 阅读 · 1 评论 -
Sicily 1029. Rabbit
正如题目中所暗示的一样,整个过程和Fibonacci数列很相像,但需要进行些许改动,就可以得到一个很类似的状态转移方程:rabbit[i]=rabbit[i-1]+rabbit[i-m],理解为当前月的成年兔子是上一个月已经成年的兔子加上这个月刚成年的兔子。而题目所求为d个月之后所有成年的和未成年的兔子,所求便是:rabbit[d]+rabbit[i],max(1,d-m+1)另外因为最终结果原创 2012-02-04 23:49:38 · 1144 阅读 · 0 评论 -
Sicily 1150. 简单魔板
从原始状态开始,分层宽搜找到所有10步(NRun Time: 0sec Run Memory: 436KB Code length: 2109Bytes SubmitTime: 2012-01-07 19:21:05 // Problem#: 1150// Submission#: 1180166// The source code is licensed under Cr原创 2012-02-05 23:08:11 · 1117 阅读 · 0 评论 -
Sicily 1156. Binary tree
完全二叉树的前序遍历,但用不着真的构建一个完全二叉树,可以使用数组来进行模拟。具体就是构建一个1000的数组,每个位置包含有节点内容、左子树节点、右子树节点即可,然后找出根节点,再使用递归进行前序遍历。Run Time: 0sec Run Memory: 324KB Code length: 923Bytes SubmitTime: 2012-01-04 17:02:20 //原创 2012-02-05 23:16:22 · 1212 阅读 · 0 评论 -
Sicily 1001. Alphacode
动态规划题目,若第i个字符能够和前一个字符构成有意义的密码,即10-26,则这个字符前(包括这个字符)的子字符串可以构成的可能解有dp[i] =dp[i-1]+dp[i-2]个,因为此时:这个字符可以单独作为一个密码存在,此时整个子字符串有dp[i-1]个解;又或者是和前一个字符作为一个密码存在,此时整个字符串有dp[i-2]个解。若第i个字符无法和其前一个字符构成有意义的密码,那么这个字符只能作原创 2012-02-04 11:43:46 · 1193 阅读 · 0 评论 -
Sicily 1031. Campus
Dijkstra算法,其中要增设一个map容器,使得地点和整数有对应关系。陷阱有三点:一是S和T可能是相等的,此时输出为0;二是S和T可能有一个或两个不出现在map里面,表示无路可走的状态,此时输出为-1;三是默认的最长路程不是100,100只是一条路的最长长度,理论上最长长度出现在a到b需要经过所有的地点(最多100条路,那最多就有200个地点,但若能够一条线串起来的话,最多就是经过100个地点原创 2012-02-04 11:46:15 · 580 阅读 · 0 评论 -
Sicily 1090. Highways
最小生成树,在这里用的是Prim最小生成树算法(其实是因为从没看过Kruskal最小生成树算法的代码),中规中矩地做完就行了。 Run Time: 0.07sec Run Memory: 1160KB Code length: 1262Bytes SubmitTime: 2012-01-06 18:22:10 // Problem#: 1090// Submission#:原创 2012-02-04 16:06:34 · 829 阅读 · 0 评论 -
Sicily 1147. 谁拿了最多奖学金
直接模拟即可。Run Time: 0secRun Memory: 288KBCode length: 898BytesSubmitTime: 2011-01-21 00:38:40// Problem#: 1147// Submission#: 591053// The source code is licensed under Creative Commons Attri原创 2012-02-05 23:05:23 · 1048 阅读 · 0 评论 -
Sicily 1151. 魔板
N的上限没有了,就老老实实地全部宽搜。有人提出用康托压缩来存储,也有道理;而这里用的仍然是上一道题的解法,只不过不再限制在10步以内而已。相比于康托压缩,我用map来存储信息,空间消耗更大(毕竟是关联容器),时间效率也更大(人家是开放式寻址,常数时间;我顶多是二分查找,log(n)时间而已),但既然能够AC,就偷懒下不改了。 另:貌似记忆化深搜(宽搜)+康托压缩的时间会少很多,但临考试原创 2012-02-05 23:11:38 · 1433 阅读 · 0 评论 -
Sicily 1159. Sum
常见的高精度问题,用string模拟解决,根据个人习惯偏好,只要能过,怎样写都行。 Run Time: 0sec Run Memory: 312KB Code length: 879Bytes SubmitTime: 2012-01-28 21:44:57 // Problem#: 1159// Submission#: 1201505// The source code原创 2012-02-05 23:19:28 · 617 阅读 · 0 评论 -
Sicily 1211. 商人的宣传
动态规划。其实一直都不知道动态规划是什么,看见什么状态转移方程就头疼,一直缺乏了解。但这道题比较简单,可见方程是:road[ I ][ J ][ L ] = ∑road[ I ][ K ][ L – 1 ],意思是在L天内,从I点到J点的方案等于所有在L-1天内,从I点到K点的方案数总和,其中从K点到J只需一天。当然也可以用递归来做,只不过前后顺序相反而已。另:这道题q的数目好像不多,利用原创 2012-02-08 12:10:41 · 1580 阅读 · 0 评论 -
Sicily 1252. Defining Moment
寻找子字符串问题,附加条件是前后缀,即只能出现在前几个字符或者后几个字符,并且删除前后缀(如果存在的话)后,剩下的字符串不为空。注意拆分和替换即可,其中拆分我用了substr函数,替换则是通过函数来实现。Run Time: 0sec Run Memory: 312KB Code length: 1669Bytes SubmitTime: 2012-01-31 16:32:04原创 2012-02-08 12:37:46 · 684 阅读 · 0 评论 -
Sicily 1282. Computer Game
传说中的KMP算法,适用于寻找子串问题,其核心思路是先将子串进行自我匹配,构建出一个next数组。当寻找子串时匹配失败,就可以回到下标为当前位置的next数组里继续开始匹配,避免了每次都得从头再来的麻烦,以此来节省时间。Run Time: 0.14sec Run Memory: 660KB Code length: 882Bytes SubmitTime: 2011-11-03原创 2012-02-08 12:39:44 · 1408 阅读 · 0 评论 -
Sicily 1321. Robot
Dijkstra算法,但是由于是网格的缘故,在寻找最短路径时很费时,直接使用会TLE,必须使用优先队列才可以AC。另外也可以用宽搜,但要保证路程必须是最短的 (以往宽搜一般是访问过就不访问了,而在这里用,若新的访问能够使得访问该点的路程变短的话,就必须重新访问)。鉴于宽搜必须全部访问完毕才能够得到最优结果,不同于利用贪心算法的Dijkstra算法可以保证每个子过程都是最优的,所以宽搜不能因为目标节原创 2012-02-08 12:42:08 · 1427 阅读 · 0 评论 -
Sicily 1036. Crypto Columns
其实就是解码问题,那么首先就要明白编码原则:将信息以每一行为关键字的长度进行排列,然后以关键字每一个字符的字典序大小,依次对每一对应列进行输出。然后对这个原则进行逆向推导即可,相关细则就不一一叙说了(很久以前做的题目了,不太记得了……)。Run Time: 0secRun Memory: 288KB Code length: 1186Bytes SubmitTime: 2010-1原创 2012-02-08 11:57:46 · 1397 阅读 · 0 评论 -
Sicily 1381. a*b
高精度问题中的大数乘小数,利用string来进行模拟,注意数位的移动即可。 Run Time: 0sec Run Memory: 312KB Code length: 973Bytes SubmitTime: 2011-12-21 12:51:04 // Problem#: 1381// Submission#: 1104323// The source code is l原创 2012-02-08 12:44:20 · 707 阅读 · 0 评论 -
Sicily 1463. The Brave Sir Robin’s cAsE cOrReCtOr
前三段是一个比较有趣的背景故事,与做题无关,可以略过。 需要注意的是输入是文本输入,也即是多行输入,以EOF结束。 另外转换规则是,如果当前字符是.或者?或者!,那后面的字母要大写,两者之间的空格和圆括号可以忽略。整个样例输入都是比较符合书写规范的(除了大小写),不存在单词被割裂在上下两行这些情况,所以只需考虑那些常规意义的输入文本(样例的输入是个人臆测,否则字符串的处理无以解释的通)。这样需原创 2012-02-08 12:52:21 · 619 阅读 · 0 评论 -
Sicily 1198. Substring
单纯地对子字符串进行排序是不行的,因为这些字字符串最后是要组合在一起的,而直接比较大小会忽略掉组合后因长度不同而产生的问题。可以举一个例子,就是b和ba,明显b比ba小,但组合起来后,bba却比bab大。所以,对于子字符串s1和s2,此题的关键不在于s1和s2的大小关系,而在于s1+s2和s2+s1的大小关系。Run Time: 0secRun Memory: 312KB Code l原创 2012-02-07 16:54:03 · 1375 阅读 · 0 评论 -
Sicily 1200. Stick
其实就是找出唯一的那个奇数个的stick而已,各种方法,任君使用。Run Time: 0secRun Memory: 312KBCode length: 493BytesSubmitTime: 2011-11-30 23:06:39// Problem#: 1200// Submission#: 1019536// The source code is licensed u原创 2012-02-08 12:00:50 · 817 阅读 · 0 评论 -
Sicily 1210. 二叉树
前后序遍历之所以会产生多种结果,关键在于前后序遍历中,左子树和右子树(或者说左节点和右节点)在遍历顺序上是相邻的,不像中序遍历那样有根节点可以加以区分。而问题就出现在,若果当前节点是单子树的,在前后序遍历上就无法区分它究竟是左子树还是右子树。若这种情况出现了n次,那么结果就有2的n次方个可能。所以,解决这个问题的关键就转移到了寻找单子树节点的个数上。通过简单的构图,可以发现对于单子树的存在原创 2012-02-08 12:04:33 · 1055 阅读 · 0 评论 -
Sicily 1424. 奖金
运用拓扑排序,来确定大小关系,并逐一递加奖金值,而且记录能够进行排序的总数。若与n相等,则表示合法方案存在,计算奖金总数;否则不存在,输出相关信息。 Run Time: 0.01sec Run Memory: 504KB Code length: 1283Bytes SubmitTime: 2011-12-28 13:09:10 // Problem#: 1424// Sub原创 2012-02-08 12:46:28 · 992 阅读 · 0 评论 -
Sicily 1783. Large is Better
简言之就是排序,将不含0的区间进行从大到小的排序,然后输出即可。 Run Time: 0sec Run Memory: 304KB Code length: 631Bytes SubmitTime: 2012-01-30 20:08:46 // Problem#: 1783// Submission#: 1202694// The source code is licens原创 2012-02-09 12:08:27 · 885 阅读 · 0 评论 -
Sicily 1791. Philia's Problem
关键在于判断给出的日期是星期几,要自己写一个函数来判断的话就比较麻烦,可以直接调用zeller函数,相当省事。另外注意年月日的进位就没事了。 Run Time: 0.01sec Run Memory: 304KB Code length: 1194Bytes SubmitTime: 2011-12-11 13:35:04 // Problem#: 1791// Submiss原创 2012-02-09 12:15:48 · 515 阅读 · 0 评论 -
Sicily 1796. Max's kingdom
看着数据又大又多,开始还觉得比较麻烦,但一看到4sec的限制,问题就变得简单了:快速排序。注意下怎样储存数据就OK了。 Run Time: 0.49sec Run Memory: 5524KB Code length: 815Bytes SubmitTime: 2011-12-17 19:27:29// Problem#: 1796// Submission#: 108857原创 2012-02-09 12:21:52 · 500 阅读 · 0 评论 -
Sicily 1797. Do solve it directly
题目描述是拿来吓人的,废话一筐箩(图表看第一行就行了)。就按标题说的,Do solve it directly!直接按照给出的函数递归实现,其他什么都是浮云。Run Time: 0.01sec Run Memory: 304KB Code length: 582Bytes SubmitTime: 2011-12-18 00:49:53 // Problem#: 1797/原创 2012-02-09 12:23:27 · 466 阅读 · 0 评论 -
Sicily 1961. Closest Points
简单计数问题,但比较诡异的是WA后,将printf输出改为cout输出就AC了,又或者保持printf输出但改为比较距离(原本是比较距离的平方)也可以AC。具体原因不详……Run Time: 0sec Run Memory: 304KB Code length: 758Bytes SubmitTime: 2011-12-20 19:39:17 // Problem#: 1961原创 2012-02-09 12:34:25 · 674 阅读 · 0 评论