GoogleCodeJam Qualification Round 2014 ABD

69 篇文章 0 订阅
16 篇文章 0 订阅

Problem A. Magic Trick

题目链接

https://code.google.com/codejam/contest/2974486/dashboard


简单模拟

意思就是给你1~16这十六个数字

随意无重复放置在一个4*4的矩阵中 然后告诉你一个数表示行数

再把这十六个数字重新放在4*4的矩阵中 再告诉你一个数字表示行数

问你是否有一个数会出现在第一次矩阵所说的行数 同时出现在第二次矩阵所说的矩阵中

如果没有输出

Volunteer cheated!
如果有一个输出该数

如果有多个 则输出

Bad magician!
当然需要每个输出要输出第几个case

"Case #x: y"

x代表case

y代表不同情况的结果


这个题目很简单 数据范围不大 直接暴力枚举就好了

我们可以把第一个矩阵所说的那一行数据存到一个一维数组中 然后用它和第二次矩阵所说的矩阵行数扫描下 记录下相同的数的次数

最后对次数判断输出结果就好


ac代码

http://paste.ubuntu.com/7243228/


Problem B. Cookie Clicker Alpha

题目链接

https://code.google.com/codejam/contest/2974486/dashboard#s=p1


模拟(贪心?无穷级数?DP?)

意思是起始时你有2 / s 的收入 但是你的单位数到到达X才算胜利

期间 你可以花费C个单位购买一个永久的增加F/s的收入

就问你最快到达X单位的时间是多少?

输出

Case #x: y

x代表case

y代表所需最少时间(保留七位小数)


我感觉直接模拟就好了

其实每次到达可以购买C个单位的时候判断下 当前直接到达X的时间和购买以后再到达X的时间哪个快

如果是先买C快 就接着这样循环  如果是直接到达X快就跳出循环


ac代码

http://paste.ubuntu.com/7243309/


Problem D. Deceitful War

题目链接

https://code.google.com/codejam/contest/2974486/dashboard#s=p3


贪心

有两个人 每次每人都会得到N个质量不同的方块 质量在(0.0kg 到 1.0kg)之间 而且每个质量都不相等

然后两人进行游戏

正常规则

两个人均不知道对方方块的质量

重复进行一下步骤N次

1。第一个人选择出一个方块

2。第一个人把方块的质量大小告诉第二个人

3。第二个人选择一个方块和第一个比较质量 质量大的那方获胜利

4。双方选出的方块均被销毁


骗人的规则

第一个人知道第二个人的方块质量

重复进行一下步骤N次

1。第一个人选择出一个方块

2。第一个人把方块的质量大小告诉第二个人(但是告诉的数值并不一定是方块真正的质量

但是所说的质量和第二个人出的方块质量比较的结果一定是和两个方块比较后结果一样 不然这种谎言不就被拆穿了嘛 :-D )

3。第二个人选择一个方块和第一个比较质量 质量大的那方获得一分

4。双方选出的方块均被销毁

输出

Case #x: y z

x代表第几个case

y代表在骗人的规则下第一个人获得的分数

z代表在正常规则下第一个人获得的分数


题目略长 = =

理解了以后就感觉像田忌赛马 正常规则时田忌是第二个人

骗人规则时田忌是第一个人

就对于两人的方块都sort下

然后从 最大的开始 田忌方判断下自己的最大是否大于对方的最大 如果是就双方都销毁最大的田忌方+1

如果田忌方最大的小于对方最大 那么田忌方销毁最小的对方销毁最大的 对方+1

如何模拟销毁? 就直接用指针移动下就好


ac代码

http://paste.ubuntu.com/7243370/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值