题目名称 | 589. 硬币 |
---|---|
输入输出 | xoinc.in/out |
难度等级 | ★★☆ |
时间限制 | 1000 ms (1 s) |
内存限制 | 128 MiB |
测试数据 | 10 |
题目来源 | cqw 于2011-09-16加入 |
开放分组 | 全部用户 |
提交状态 | |
分类标签 | |
分享题解 |
通过:21, 提交:30, 通过率:70% | ||||
dateri | 100 | 0.094 s | 6.25 MiB | C++ |
ztx | 100 | 0.127 s | 15.71 MiB | C++ |
OIdiot | 100 | 0.129 s | 17.15 MiB | C++ |
OI永别 | 100 | 0.130 s | 15.59 MiB | C++ |
OI永别 | 100 | 0.135 s | 15.59 MiB | C++ |
JSX | 100 | 0.138 s | 15.71 MiB | C++ |
sqyon | 100 | 0.141 s | 15.74 MiB | C++ |
天一阁 | 100 | 0.159 s | 15.74 MiB | C++ |
dateri | 100 | 0.163 s | 6.23 MiB | C++ |
stdafx.h | 100 | 0.175 s | 19.57 MiB | C++ |
本题关联比赛 | |||
20110916 |
关于 硬币 的近10条评论(全部评论) | ||||
---|---|---|---|---|
以当前剩下的硬币数和对手取的硬币数为状态进行转移。
悲剧的是我一开始又把数组开小了以致有2个点没过…… |
农夫约翰的奶牛喜欢玩硬币游戏,因此约翰设计了一种新的双人对弈硬币游戏Xoinc。
开始,在地上有N (5 <= N <= 2,000)个硬币堆成的一个栈,硬币i有一个整数值C_i (1 <= C_i <= 100,000)
第一个玩家(先手玩家)可以从硬币栈的顶部开始取一个或两个硬币(C_1 and maybe C_2) 。如果第一个玩家取走了栈顶的一个硬币,第二个玩家(后手玩家)在下一步可以取走一个或两个硬币。如果第一个玩家取走了栈顶的两个硬币,第二个玩家可以取走1,2,3或4个硬币。在每一步,当前玩家至少取一个,最多取对手两倍数量的硬币。
然后,他们用得到的硬币价值宴请约翰,所以他们都想在游戏中获得最大价值的硬币。傲慢的后手玩家说我将使用最理想的策略取得胜利,那么先手玩家如何才能在游戏结束时得到最大价值的硬币。
输入样例:(xoinc.in):
5
1
3
1
7
2
输入解释:有5个硬币价值分别为1,3,1,7和2
输出样例:(xoinc.out):
9
输出解释:先手玩家开始取了一个硬币(价值1)。对手取了一个硬币(价值3).先手玩家又取了两个硬币(价值1,7,总数为9)。后手玩家得到了剩余的硬币(价值2,总数为5)
数据规模:
对于20%的数据,5<=N<=10
对于30%的数据,5<=N<=100
对于50%的数据,5<=N<=500
对于100%的数据,5<=N<=2000