poj 2385

来源:互联网 发布:知善恶树英语 编辑:程序博客网 时间:2024/06/04 01:13

poj 2385
2棵苹果树在T分钟内随机由某一棵苹果树掉下一个苹果,奶牛站在树#1下等着吃苹果,它最多愿意移动W次,问它最多能吃到几个苹果。
a[i][j] 表示在第j棵树下,前i秒的苹果和
dp[i][j]表示第i秒活动j次可吃到的苹果数

#include <iostream>#include <cstdio>#include <cstring>using namespace std;int t,aa,w,dp[1005][31],a[1005][2];int main(){    scanf("%d%d",&t,&w);    for(int i = 1; i <= t; ++i)     {        scanf("%d",&aa);        if(aa == 1) a[i][0] = 1;        else a[i][1] = 1;    }    for(int i = 1; i <= t; ++i)        for(int j = 0; j <= w; ++j)            if(j % 2)             {                dp[i][j] = dp[i - 1][j] + a[i][1];                if(j >= 1) dp[i][j] = max(dp[i][j],dp[i - 1][j - 1] + a[i][0]);            }            else            {                dp[i][j] = dp[i - 1][j] + a[i][0];                if(j >= 1) dp[i][j] = max(dp[i][j],dp[i - 1][j - 1] + a[i][1]);            }    printf("%d",dp[t][w]);    return 0;}
原创粉丝点击