2012年10月14日
摘要: BZOJ_2017 一个思路就是从游戏结束开始向前dp,dp到最初状态时自然就知道最大能得到多少钱了,但是从后向前dp有一个问题就是需要直到前一步对方拿了多少硬币,才能知道当前能拿多少,因此用一维标记一下前一步对方拿了多少即可,于是就用f[i][j]表示还剩i枚硬币时前一步对手拿了j枚硬币的情况下,自己最多能得到多少钱。状态转移方程为f[i][j]=max{sum[i]-f[i-k][k]}(1<=k<=min{2*j,i}),其中sum[i]表示剩下的i枚硬币的价值和。#include<stdio.h>#include<string.h>#include& 阅读全文
posted @ 2012-10-14 19:24 Staginner 阅读(532) 评论(0) 推荐(0) 编辑