您的位置:首页 > 其它

[BZOJ2017] [Usaco2009 Nov]硬币游戏

2016-03-21 10:30 417 查看

传送门

http://www.lydsy.com/JudgeOnline/problem.php?id=2017

题目大意

第一个人最开始拿一枚/两枚硬币,后面的人拿的硬币个数为[1..2∗上一个人拿的]第一个人最开始拿一枚/两枚硬币,后面的人拿的硬币个数为[1..2*上一个人拿的]

两个人都希望拿走最多钱数,询问第一个人最多拿多少两个人都希望拿走最多钱数,询问第一个人最多拿多少

题解

sum[i]:后缀和sum[i]:后缀和

dp[i,j]:剩下i枚硬币,前一个人拿了j枚,自己最大的收益dp[i,j]:剩下i枚硬币,前一个人拿了j枚,自己最大的收益

dp[i,j]=max{sum[i]−dp[i−k,k]} (1≤k≤min(2j,i))dp[i,j]=max\{sum[i]-dp[i-k,k]\}~~~~~(1\le k\le min(2j,i))

dp[i,j]=sum[i]−max{dp[i−k,k]} (1≤k≤min(2j,i))dp[i,j]=sum[i]-max\{dp[i-k,k]\}~~~~~(1\le k\le min(2j,i))

dp[i,j−1]=sum[i]−max{dp[i−k,k]} (1≤k≤min(2j−2,i))dp[i,j-1]=sum[i]-max\{dp[i-k,k]\}~~~~~(1\le k\le min(2j-2,i))

这样我们只需要跑多出来的那两组就好了这样我们只需要跑多出来的那两组就好了

这类博弈的dp,两个人都是最优拿法,所以相同状态的选择肯定是相同的这类博弈的dp,两个人都是最优拿法,所以相同状态的选择肯定是相同的

CODE
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: