码迷,mamicode.com
首页 > 其他好文 > 详细

假期训练七(hdu-2845 dp,hdu-1846,2188 巴什博奕)

时间:2019-01-13 17:12:29      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:include   view   https   思路   hide   blank   while   name   scanf   

题目一:传送门

思路:动态规划,从每一行来看,每次更新求出这一点的最大值,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\n",dp[n]);
    }
    return 0;
}
View Code

 

题目二、三:

思路:

巴什博奕

(1)两个人取石子,总共有n个石子,每个人一次最多取m个。

(2)先取完石子的人获胜。

判断n%(m+1)==0,如果成立,后手胜利;否则先手胜利。

 

扩展:取光者输,调整策略,变为(n-1)%(m+1)==0,后手胜利;否则,先手胜利。

假期训练七(hdu-2845 dp,hdu-1846,2188 巴什博奕)

标签:include   view   https   思路   hide   blank   while   name   scanf   

原文地址:https://www.cnblogs.com/2018zxy/p/10263062.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!