ACM-2011 Google Code jam Round 1

     伴随着Round 1C的落幕,我只能遗憾的说,今年的GCJ比赛,我到此为止了。

     今年是我第一年参加GCJ的比赛,战绩:资格赛70分,Rank:2676,Round 1A:没有参加。Round 1B:20分,Rank:1977,Round 1C:40分,Rank:1059(这次是我最接近赛点的成绩了,现在想来还是有很多遗憾的)。

     Round 1A:北京时间2011年5月21日早上9点,由于实验室集体出去春游,错过了Google Code jam Round 1A的机会,回来已经是晚上8点多了,发现Round 1A前1000名的只要过了第一道题就可以了。于是匆匆看了第一题。

     Round 1A FreeCell Statistics 第一题:题目大意为,有个人每天玩游戏,最多可以玩N把,然后已经玩了D回,赢得概率是Pd,统计到目前为止,可以玩的所有游戏回数中赢的概率为Pg。但是它忘了今天玩了多少回,总括玩了多少回G。给定三个数 N,Pd, Pg,问这个组合是否是有效的。

     分析:因为Pd始终是整数,而且是可以整除的,因此一个条件是今天赢得次数/D = Pd / 100. 而D < N,也就是能否在1-N之间找到一个数D,使得 Pd / 100 * D 刚好为一个整数,相当于D * gcd(pd, 100)/ 100为整数。gcd表示最大公约数。另D = 100 / gcd(pd,100)就可以求得最小的D了。对于任意的Pg都可以构造出来,但是有两个特殊值 0和100,当pg=0时,pd = 0;pg=100时,pd = 100;

     因此代码如下:

 

     由于Round 1B的时间是:北京时间2011年5月22日凌晨0点。就没有接着往下做了,等有空的时候再把剩下几道题补上吧。

     Round 1B:北京时间2011年5月22日凌晨0点。

     第一题:RPI。题目比较晦涩难懂,具体就是根据公式 RPI = 0.25 * WP + 0.50 * OWP + 0.25 * OOWP。WP,代表本队的胜率,OWP:代表跟本队比过赛的对手队伍,排除这场比赛以后的胜率和的平均(注意是比过赛的)。OOWP:是非本队队伍对OWP的一个均值。

     所以题目读懂以后,也就不难了。

 

     第二题:Revenge of the Hot Dogs 

     题目大意,有一条无限长的东西走向大街,上面有很多热狗摊子,然后为了避免他们互相争抢生意,他们之间的间距至少为D,已知热狗摊子移动速度为1米每秒,问如何移动这些摊子,使得他们的移动时间最短。

     这道题没有过。我觉得我的想法是对的,可是运行结果在Case44和Case49出错了,其他的测试用例都通过了。等有时间我过了它,在好好解释吧。错误代码如下:

 

     第三题: House of Kittens

     没时间做了,下次再一起说吧。

     Round 1C时间:2011年5月22日下午5点开始。感觉第三轮的题目比前两轮都要简单,也是我最好的一次成绩,可惜还是没有过。

     Square Tiles:用红色2*2方块替换蓝色的方块,因为红色的方块不能重叠,所以很简单。只需要遍历一遍,看map[i][j] == '#'&&map[i+1][j] == '#' && map[i][j+1] == '#' && map[i+1][j+1] == '#',则替换,如果不是的话,则不能完全替换。

     代码如下:

 

     Space Emergency:题目很长,很难懂。大意是飞船从0-N进行逃生,速度为0.5,然后途中可以建设L座加速器,加速器建设完成以后可以立即对飞艇进行加速,速度变成1,然后0-N的距离为a1,a2,a3,……ac的循环。

     当时这道题把我看懵了,其实可以用简单的贪心算法就可以过的。但是我没有时间去想了(感觉当时太着急了),看到小数据量的L的取值只有0 1 2三种情况,于是对三种情况做了一下简单的遍历。

     贪心算法是,在飞船加速器建设起来之前,通过的所有路径都不能进行加速,直到飞船加速器建设起来以后,选取最长的L个路径进行加速。题目太长了,看完就已经用了20分钟了(我英语实在是太烂了,这次没有通过第一轮,英语的掣肘也占到了一大部分比重)。

     小数据量代码如下:

 

     Perfect Harmony:题目也是很难懂啊(我英语太烂了),其实就是在L到H之间找一个数Y,使得Y能被其他音阶整除,或者可以整除其他音阶。

     小数据量很好过,遍历L到H的所有整数吧。代码如下:

 

     所有题目的完整解法,等我全部做完以后,在写吧。得好好想想,自己如何提高了。

     最后附上本次排名赛中,我的成绩,就差8分钟。自己葬送了自己啊!

 

    

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值