假期训练七(hdu-2845 dp,hdu-1846,2188 巴什博奕)
Posted 2018zxy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了假期训练七(hdu-2845 dp,hdu-1846,2188 巴什博奕)相关的知识,希望对你有一定的参考价值。
题目一:传送门
思路:动态规划,从每一行来看,每次更新求出这一点的最大值,dp[i]=MAX(dp[i-1],dp[i]+dp[i-2]),不会出现
两个数字相邻的情况;先对行进行更新,再对列进行更新。
#include<iostream> #include<cstdio> #include<cstring> using namespace std; const int maxn = 2001; int a[maxn],dp[maxn]; int MAX(int x,int y) { return x>y?x:y; } int main(void) { int n,m,i,j; while(~scanf("%d%d",&n,&m)) { for(i=1;i<=n;i++) { for(j=1;j<=m;j++) scanf("%d",&a[j]); for(j=2;j<=m;j++) a[j]=MAX(a[j]+a[j-2],a[j-1]); dp[i]=a[m]; } for(i=2;i<=n;i++) dp[i]=MAX(dp[i]+dp[i-2],dp[i-1]); printf("%d ",dp[n]); } return 0; }
思路:
巴什博奕
(1)两个人取石子,总共有n个石子,每个人一次最多取m个。
(2)先取完石子的人获胜。
判断n%(m+1)==0,如果成立,后手胜利;否则先手胜利。
扩展:取光者输,调整策略,变为(n-1)%(m+1)==0,后手胜利;否则,先手胜利。
以上是关于假期训练七(hdu-2845 dp,hdu-1846,2188 巴什博奕)的主要内容,如果未能解决你的问题,请参考以下文章
ACM刷题专题这个假期一起来刷题把,刷完冲击区域赛,刷完拿不到奖随便打!