上一页 1 ··· 3 4 5 6 7 8 9 下一页
摘要: Round 1C 2010,C轮的测试题了。本以为难度会加大,不过第一题还是比较简单的。Rope Intranet,统计绳子的交点个数。算法很直接,遍历所有的绳子,累计它与剩下的绳子的交点的个数。代码如下:#!/usr/bin/python#encoding:UTF-8#Filename:RopeIntranet.pyimport sysdef compareWire(a,b): if (a[0]<b[0] and a[1]>b[1]) or (a[0]>b[0] and a[1]<b[1]): return 1 else: return 0inname... 阅读全文
posted @ 2012-04-09 09:51 Frandy.CH 阅读(238) 评论(0) 推荐(0) 编辑
摘要: Welcome to code jam,Qualification Round 2009的第三道题。题目的大概意思是,给定一个字符串,要求找出里面welcome to code jam的次数,给出最后四位数字。只要这19个字符按顺序出现了,就可以算作一次,不管是否被其它字符隔开。在Contest Analysis中,给的方法是动态规划。在思考了一小会没有想到解法之后又直接看答案了。。。动态规划的思想是,cnt[i,j]表示在给定的字符串的前i个字符中,出现welcome to code jam的前j个字符的个数,那么处理i+1个字符时,如果第i+1个字符是对应的第j个字符,那么cnt[i+1] 阅读全文
posted @ 2012-04-08 23:15 Frandy.CH 阅读(267) 评论(0) 推荐(0) 编辑
摘要: Water Sheds,这是Qualification Round 2009的第二道题,还没有想到好的解决办法的时候,直接看了参考解答。参考解答研究了好久才看明白,看来还需要加强练习。先来看看题目意思,给定一个mxn的矩阵,每个位置是一个海拔值,相当于是一份地图,要求根据水流给这份地图进行标注,水流动的规则是,1. 对任一个位置,至多流向它的四个邻居中的一个,邻居就是东南西北方向的四个位置;2. 如果相比于四个邻居,它本身的海拔最低,那么水不流动,这个位置称为sink,盆地;3. 否则,水流向海拔最低的一个邻居;4. 选择海拔最低的邻居的顺序是,North,West,East,South,即北 阅读全文
posted @ 2012-04-08 20:52 Frandy.CH 阅读(303) 评论(0) 推荐(0) 编辑
摘要: 进入Qualification Round 2009的试题,第一道题Alien Language,模式匹配的问题,既然选择了Python,可以使用Regular Expression正则表达式,那就是太简单了。主要问题就在于把给定的pattern转换为regular expression,把"("和")"换成"["和"]"就可以了,代码如下:#!/usr/bin/python#encoding:UTF-8#Filename:AlienLanguage.pyimport sysimport reinname = &q 阅读全文
posted @ 2012-04-07 21:08 Frandy.CH 阅读(279) 评论(0) 推荐(0) 编辑
摘要: Numbers,这道题是Round 1A 2008的最后一道题,给定n,要求计算(3 + √5)^n整数部分的最后三位数字,如n= 5, (3 + √5)5= 3935.73982,那么结果就应该是935,不足三位数字,则补零。(3 + √5)n+1与(3 + √5)n有递推关系,用an+bn√5表示(3 + √5)n,那么α(n + 1)= (3 + √5)(an+ bn√5) = (3an+ 5bn) + (3bn+ an)√5,可以写成矩阵形式,在contest analysis里面也给出了Python的解题代码,如下,#!/usr/bin/python#encoding:UTF-8#F 阅读全文
posted @ 2012-04-07 19:39 Frandy.CH 阅读(332) 评论(0) 推荐(0) 编辑
摘要: 还是MilkShakes的问题。今天看了一下Contest Analysis,按照提示总算得到了较好的结果。在Contest Analysis中,给出了算法的描述,如下:1. 初始化flavor choice全为0,检查customer的满意情况;2. 对于不满意的customer,如果他只喜欢unmalted的,但是所有的已经malted,那么该customer不可能被满足,给出IMPOSSIBLE;3. 对于不满意的customer,如果他只有一种喜欢的malted,那么将对应的malted,回到步骤2;4. 如果没有不满意的customer,那么就是得到了解。在用Python实现的时候, 阅读全文
posted @ 2012-04-07 17:08 Frandy.CH 阅读(360) 评论(0) 推荐(0) 编辑
摘要: 继续MilkShakes问题。之前是使用穷举搜索的方法,能保证结果的准确,但是效率较低,对于large case无法完成测试。后来想用贪心算法来实现。贪心策略是,统计flavor处于malted或unmalted出现的次数,取unmalted出现次数最多的flavor,这样被迫出现的malted的flavor次数会少;取malted出现次数最多的flavor,使得被迫出现malted的次数减少。在使用贪心算法之前,可以对只有一种选择的customer进行满足,确定一部分flavor。如果不能满足,则直接得到结果。代码如下:#!/usr/bin/python#encoding:UTF-8#Fil 阅读全文
posted @ 2012-04-06 21:18 Frandy.CH 阅读(322) 评论(0) 推荐(0) 编辑
摘要: MilkShakes,这道题有些难度,自己水平太差,还没有找到好的方法来解决。对于small case,得到了正确的答案。先来看看题。题目的大概意思是,给一些不同flavor(风味)牛奶(1,..N),可以是malted(1),也可以是unmalted(0),但是每一种牛奶只能是malted或者unmalted;有很多顾客,每个顾客喜欢的不一样,也可能喜欢多种。要求给出各种牛奶是否malted,能够满足所有顾客都有自己喜欢的flavor,并且malted的数量尽可能少。具体内容参考http://code.google.com/codejam/contest/32016/dashboard#s= 阅读全文
posted @ 2012-04-06 17:59 Frandy.CH 阅读(342) 评论(0) 推荐(0) 编辑
摘要: 继续Python练习。这次的题很简单的。这次的题是Minimum Scalar Product,大概意思是给你两个数组va和vb,两个数组的元素对应相乘,然后求和,要求和最小,在数组元素顺序可以调整的时候。这里主要用到一个不等式,x和y两个升序的数组,那么sum(x[i]*y[i])>=sum(x[i]*y[n-i]),这个不等式在元素中有负数时也是成立的,所以问题的解法就很直接了。Python里面可以直接调用sort和reverse函数,先将两个数组va和vb排序,然后将其中一个reverse一下,在把元素对应相乘,就得到最小值了。代码如下:#!/usr/bin/python#enco 阅读全文
posted @ 2012-04-01 12:31 Frandy.CH 阅读(544) 评论(0) 推荐(0) 编辑
摘要: 与Store Credit和Reverse Words同一组的另一道题,T9 Spelling也解决了。题目大概意思就是,手机的9格键盘,上面有26个字母,0表示空格。a字母只需要按一个2,b字母需要连续按2两次,就是22,要输入ab时,2和22之间需要有一段间隔,用空格表示,而要输入的空格是0,例如 i am ok,对应的是4026065。具体的可以看http://code.google.com/codejam/contest/351101/dashboard#s=p2由于7和9对应的是4个字母,其它的是3个字母,字母与数字之间的映射表需要手动写了。这里主要问题就是映射怎么写?如果是' 阅读全文
posted @ 2012-03-31 22:02 Frandy.CH 阅读(479) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7 8 9 下一页