博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
北大ACM——2385,Apple Catching(DP)
阅读量:4049 次
发布时间:2019-05-25

本文共 1657 字,大约阅读时间需要 5 分钟。

dp[T,W,N]: 在T分钟,移动次数剩余W次时,在第N棵树下可以拿到的苹果的最大数量。

简化:
一开始因为奶牛是在第一棵树,而苹果树只有两棵,因此奶牛的位置可以由剩余移动次数W来确定,故
dp[T,W,N] → dp[T,W]: 在T分钟,移动次数剩余W次时,奶牛可以拿到的最大苹果数。
设置数组a[T],记录T时间哪个位置有苹果。
状态转移方程:
if(a[i]==1)
{
if(W与W0奇偶性相同,就可以拿苹果)
dp[T,W]=max(dp[T-1,W]+1,dp[T-1,W+1]+1) //T-1时就在1位置,或者T-1时从2过来拿苹果
else
dp[T,W]=max(dp[T-1,W],dp[T-1,W+1])
}
if(a[i]==2)
{
同理
}

代码如下:

#include
#include
#include
#include
using namespace std;int dp[1001][31];int a[1001]; int main(){ int T,W,i,j; int ans=0,flag; memset(dp,0,sizeof(dp)); memset(a,0,sizeof(a)); scanf("%d%d",&T,&W); if(W%2==0) flag=0; //flag=0,W为偶数,flag=1,W为奇数 else flag=1; for(i=1;i<=T;i++) scanf("%d",&a[i]); for(i=1;i<=T;i++) { for(j=W;j>=0;j--) { if(a[i]==1) //第一棵树有苹果 { if(j!=W) //边界,注意一下,小心越界了 { if(flag==1) { if(j%2==1) dp[i][j]=max(dp[i-1][j]+1,dp[i-1][j+1]+1); else dp[i][j]=max(dp[i-1][j],dp[i-1][j+1]); } else { if(j%2==0) dp[i][j]=max(dp[i-1][j]+1,dp[i-1][j+1]+1); else dp[i][j]=max(dp[i-1][j],dp[i-1][j+1]); } } else if(j==W) dp[i][j]=dp[i-1][j]+1; } else //第二棵树有苹果 { if(j!=W) { if(flag==1) { if(j%2==0) dp[i][j]=max(dp[i-1][j]+1,dp[i-1][j+1]+1); else dp[i][j]=max(dp[i-1][j],dp[i-1][j+1]); } else { if(j%2==1) dp[i][j]=max(dp[i-1][j]+1,dp[i-1][j+1]+1); else dp[i][j]=max(dp[i-1][j],dp[i-1][j+1]); } } } } } for(i=W;i>=0;i--) if(ans

一些测试样例:

7 2
2
1
1
2
2
1
1
6
7 3
2
1
1
2
2
1
1
6
7 4
2
1
1
2
2
1
1
7
8 4
2
2
1
1
2
1
2
1
7
8 1
2
2
2
1
1
2
1
2
5
8 2
2
2
2
1
1
2
1
2
6

转载地址:http://sbdci.baihongyu.com/

你可能感兴趣的文章
linux位操作API
查看>>
uboot.lds文件分析
查看>>
uboot start.s文件分析
查看>>
没有路由器的情况下,开发板,虚拟机Ubuntu,win10主机,三者也可以ping通
查看>>
本地服务方式搭建etcd集群
查看>>
安装k8s Master高可用集群
查看>>
忽略图片透明区域的事件(Flex)
查看>>
忽略图片透明区域的事件(Flex)
查看>>
AS3 Flex基础知识100条
查看>>
Flex动态获取flash资源库文件
查看>>
flex4 中创建自定义弹出窗口
查看>>
01Java基础语法-16. while循环结构
查看>>
01Java基础语法-18. 各种循环语句的区别和应用场景
查看>>
01Java基础语法-19. 循环跳转控制语句
查看>>
Django框架全面讲解 -- Form
查看>>
socket,accept函数解析
查看>>
今日互联网关注(写在清明节后):每天都有值得关注的大变化
查看>>
”舍得“大法:把自己的优点当缺点倒出去
查看>>
[今日关注]鼓吹“互联网泡沫,到底为了什么”
查看>>
[互联网学习]如何提高网站的GooglePR值
查看>>