poj之旅——2385
来源:互联网 发布:office 2016 mac 云盘 编辑:程序博客网 时间:2024/05/14 13:32
题目描述:2棵苹果树在T分钟内随机由某一棵苹果树掉下一个苹果,奶牛站在树#1下等
着吃苹果,它最多愿意移动W次,问它最多能吃到几个苹果。
题解:这道题我定义
dp状态方程dp[i][j] = max(dp[i-1][j], dp[i-1][j-1])
dp[i][j]标示在时间i,已经来回了j次时的最大苹果数目。
如果当前的次数刚到当前树下,dp[i][j]++;参考程序:
#include<cstdio>#include<cstring>#include<cstdlib>#include<algorithm>#define maxn 1100using namespace std;int dp[maxn][35];int a[maxn];int main(){int n,w;while (scanf("%d %d",&n,&w)==2){memset(dp,0,sizeof(dp));for (int i=1;i<=n;i++)scanf("%d",&a[i]);if (a[1]==1){dp[1][0]=1;dp[1][1]=0;}else{dp[1][1]=1;dp[1][0]=0;}for (int i=2;i<=n;i++){for (int j=0;j<=w;j++){if (j==0){dp[i][j]=dp[i-1][j]+a[i]%2;continue;}dp[i][j]=max(dp[i-1][j],dp[i-1][j-1]);if (j%2+1==a[i])dp[i][j]++;}}int ans=dp[n][0];for (int i=1;i<=w;i++)ans=max(ans,dp[n][i]); printf("%d",ans);}return 0;}
给出代码段:
for (int i = 0; i < T - 1; ++i){for (int j = 0; j <= W; ++j){for (int k = 0; k < 2; ++k){if (k == tree[i + 1]){// 下一个苹果掉在当前树下,那么下一分钟?// 站着不动吃一个dp[i + 1][j][k] = max(dp[i + 1][j][k], dp[i][j][k] + 1);// 移动没吃到,不变dp[i + 1][j + 1][move(k)] = max(dp[i + 1][j + 1][move(k)], dp[i][j][k]);}else{// 下一个苹果掉在另一树下,那么下一分钟?// 站着不动没吃到dp[i + 1][j][k] = max(dp[i + 1][j][k], dp[i][j][k]);// 移动吃一个dp[i + 1][j + 1][move(k)] = max(dp[i + 1][j + 1][move(k)], dp[i][j][k] + 1);}}}}
0 0
- poj之旅——2385
- poj之旅——3258
- poj之旅——3273
- poj之旅——3104
- poj之旅——3045
- poj之旅——2976
- poj之旅——3111。
- poj之旅——3579
- poj之旅——1979
- poj之旅——3009
- poj之旅——3669
- poj之旅——2718
- poj之旅——3187
- poj之旅——3050
- poj之旅——2376
- poj之旅——1328
- poj之旅——3190
- poj之旅——2393
- 首次组长遇到的团队问题
- VTK入门(二)--颜色映射
- android如何在xml中引用内部类的View
- Eclipse 运行C/C++
- error LNK2038: 检测到“_MSC_VER”的不匹配项: 值“1800”不匹配值“1600”
- poj之旅——2385
- Linux软RAID的技术概要及实现
- Installing on Raspberry PI/Raspbian from source
- VC隐藏console
- 4-2 跳马
- mjpg-streamer移植
- Android Scroll分析(一)——滑动效果是如何产生的
- Centos下安装Redis步骤简介
- 1006. 换个格式输出整数 (15)