google codejam 汇总

Practice Contests——Practice Problems

Problem A.  Alien Numbers 进制转换,一个外星语言由字符串表示,第几位的字符表示几。例如十进制就是0123456789.要从一种语言转成另一种。

Problem B. Always Turn Left 走迷宫的模拟。如果往前走,当前位置左边有墙,往右走就是左边前边有墙。记得迷宫的边界是有墙的,有的地方四面都没墙,上下,左右两块是共用一个墙的。
写这个的时候,本来打算用一个函数处理正着走和倒着走。但一懒,复制了一遍代码,没写成一个函数。结果,好几次改了一处,没改另一处。wa了好久。这样比赛的时候是肯定过不了的。


Problem C. Egg Drop f层楼,d个鸡蛋,最多碎b个。判断哪层鸡蛋摔碎。f(d,b)是算d,b已知时,最大的f的。有一个关系:f(d,b)=f(d-1,b-1)+1+f(d-1.b)。假设第一次测试第x层,如果鸡蛋碎了,就用剩下的测试x下面的,这是第一项。如果没碎,就用剩下的测试x上面的,这是第三项。x自己也是1层。
算的时候,不能全部缓存,缓存d和b同时小于100的就行。
f(d,2)=(1+d)*d/2;
f(d,3)=d*(d-1)*(d+1)/6+d;
if(b==3&&d>4000)return -1;
if(b>32&&d>32)return -1;
if(b==d)return (1LL<<b)-1;
有了f(d,b)函数之后,二分查找d(f,b)和b(f,d)就行了。


Problem D.  Shopping Plan 这个是看别人写的东西才做出来的。是个动规,状态是 当前在那个位置×当前已经有的商品需要一个a[1<<15][51]矩阵来缓存。详细递推http://stackoverflow.com/questions/4735387/can-someone-explain-one-of-the-algorithms-that-solves-this-google-code-jam-probl
发现用我笔记本跑大case 340s,用个快一些的电脑114s。看了比赛的时候必须用快的电脑了。

Practice Contests——Code Jam Beta 2008

Problem A.  Triangle Trilemma 三角形形状。

Problem B.  The Price is Wrong 枚举出所有最长递增字串,然后看看那个字母序最大,把没有的输出。

Problem C.  Random Route 一次弗洛伊德,求出有哪些起始点,每个起始点所有的最短路,然后把概率加起来。

Problem D.  Hexagon Game 首先要能求出六边形上任意两个点的距离,然后转化成一个最优匹配问题。用匈牙利算去求解。我是看别人的匈牙利的模板,匈牙利是最大,这里用边长设成10000-cost。

Practice Contests——Practice Contest

Problem A.  Old Magician 白的无偿去掉,最后两个黑的,结果就是放回一个白的。所以黑的单数,是黑,双数是白。

Problem B.  Square Fields 看别人的解题报告才会的。二分长度m,然后判断m能不能都覆盖。过每个点画横线跟竖线,所有正方形的左上角,落在这些线的交点处,能得到一种解。计算一个正方形能盖住哪些点。把盖住点一样的正方形去掉。然后动规,从0到2^n-1,看看盖住所有点最少要几个正方形,如果小于要求就可以。

Problem C.  Cycles 看的这里http://stackoverflow.com/questions/4759955/how-to-solve-a-google-code-jam-problem。过0个不能用的边的路-过1个的+过2个的-过3个的+过4个的...有一个需要注意的地方就是要判断不能走的边组成一个环的情况,如果这样,那没有过这些边的回路。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值