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代码