传送门

https://www.cnblogs.com/violet-acmer/p/9852294.html

题意:

  有两颗苹果树,在每一时刻只有其中一棵苹果树会掉苹果,而Bessie可以在很短的时间内在两个苹果树间切换,但每一时刻只能切换一下;

  求在1~T时刻,Bessie在最多可以切换W次的前提下最多可以获得多少苹果?

题解:

  定义变量dp[ i ][ j ] : 前 i 时刻,移动 j 步所获得的最大的苹果数量;

  据此写出状态转移方程:

  如何判断在i处是否的到苹果呢?

  ①如果dp[i-1][ j-1]为偶数,那么在 i 处移动之前,Bessie应该在 2 号苹果树下,因为在 i 处移动了,Bessie是在 1 号苹果树下等待 i 时刻的苹果

   反之,Bessie是在 2 号苹果树下等待 i 时刻的苹果。

  ②如果dp[i-1][ j ]为偶数,且Bessie在 i 时刻并没有移动,所以Bessie是在 2 号苹果树下等待 i 时刻的苹果

   反之,Bessie是在 1 号苹果树下等待 i 时刻的苹果。

  poj维护中............之前交的代码本地没保存,现在不想写了,明天看看poj还能登陆吗。。。。。啊啊啊啊

AC代码:

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define mem(a,b) memset(a,b,sizeof(a))
const int maxn=1e3+; int T,W;
int tree[maxn];//tree[i]=1/2 : i时刻果树1/2掉苹果
int dp[maxn][]; int inOne(int i){//判断i时刻果树1是否掉苹果
return tree[i] == ? :;
}
int inTwo(int i){//判断i时刻果树2是否掉苹果
return tree[i] == ? :;
}
int walk(int i,int j)//在i时刻移动
{
if((j-)&)
return dp[i-][j-]+inOne(i);
return dp[i-][j-]+inTwo(i);
}
int noWalk(int i,int j)//在i时刻不移动
{
if(j&)
return dp[i-][j]+inTwo(i);
return dp[i-][j]+inOne(i);
}
void Solve()
{
mem(dp,);
for(int i=;i <= T;++i)//i时刻
for(int j=;j <= W;++j)//前i时刻共移动j步
if(j == )
dp[i][j]=dp[i-][j]+inOne(i);
else
dp[i][j]=max(walk(i,j),noWalk(i,j));
printf("%d\n",*max_element(dp[T]+,dp[T]+W+));
}
int main()
{
scanf("%d%d",&T,&W);
for(int i=;i <= T;++i)
scanf("%d",tree+i);
Solve();
}

poj 2385 Apple Catching(记录结果再利用的动态规划)的更多相关文章

  1. poj 2385 Apple Catching 基础dp

    Apple Catching   Description It is a little known fact that cows love apples. Farmer John has two ap ...

  2. POJ 2385 Apple Catching【DP】

    题意:2棵苹果树在T分钟内每分钟随机由某一棵苹果树掉下一个苹果,奶牛站在树#1下等着吃苹果,它最多愿意移动W次,问它最多能吃到几个苹果.思路:不妨按时间来思考,一给定时刻i,转移次数已知为j, 则它只 ...

  3. POJ 2385 Apple Catching

    比起之前一直在刷的背包题,这道题可以算是最纯粹的dp了,写下简单题解. 题意是说cows在1树和2树下来回移动取苹果,有移动次数限制,问最后能拿到的最多苹果数,含有最优子结构性质,大致的状态转移也不难 ...

  4. poj 2385 Apple Catching(dp)

    Description It and ) in his field, each full of apples. Bessie cannot reach the apples when they are ...

  5. POJ 2385 Apple Catching ( 经典DP )

    题意 : 有两颗苹果树,在 1~T 的时间内会有两颗中的其中一颗落下一颗苹果,一头奶牛想要获取最多的苹果,但是它能够在树间转移的次数为 W 且奶牛一开始是在第一颗树下,请编程算出最多的奶牛获得的苹果数 ...

  6. POJ - 2385 Apple Catching (dp)

    题意:有两棵树,标号为1和2,在Tmin内,每分钟都会有一个苹果从其中一棵树上落下,问最多移动M次的情况下(该人可瞬间移动),最多能吃到多少苹果.假设该人一开始在标号为1的树下. 分析: 1.dp[x ...

  7. POJ 2385 Apple Catching(01背包)

    01背包的基础上增加一个维度表示当前在的树的哪一边. #include<cstdio> #include<iostream> #include<string> #i ...

  8. 记录结果再利用的"动态规划"之背包问题

    参考<挑战程序设计竞赛>p51 https://www.cnblogs.com/Ymir-TaoMee/p/9419377.html 01背包问题 问题描述:有n个重量和价值分别为wi.v ...

  9. 记录结果再利用的"动态规划"

    2018-09-24 15:01:37 动态规划(DP: Dynamic Programming)是算法设计方法之一,在程序设计竞赛中经常被选作题材.在此,我们考察一些经典的DP问题,来看看DP究竟是 ...

随机推荐

  1. Google css & Google fonts

    最近用某开源模板做提案的时候, 抓包工具老是有外部Request. 问题出在某css中有这么一句: @import url(https://fonts.googleapis.com/css?famil ...

  2. Zero to Build: Create new Xamarin apps in minutes with AppMap

    Creating a new Xamarin.Forms app can be an intimidating task, especially if you add in content pages ...

  3. yum安装时rpmdb损坏解决方法

    解决方案如下: # cd /var/lib/rpm # rm -f /var/lib/rpm/__db* # db_verify Packages # rpm --rebuilddb

  4. BZOJ1208[HNOI2004]宠物收养场——treap

    凡凡开了一间宠物收养场.收养场提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物. 每个领养者都希望领养到自己满意的宠物,凡凡根据领养者的要求通过他自己发明的一个特殊的公式,得出该领养者希望领 ...

  5. Codeforces Round #454 Div. 1

    B:考虑2*m怎么构造.因为要求相邻的数不能再相邻,容易想到黑白染色之类的东西,考虑染个色然后大概把黑点扔一边白点扔一边.显然m<=3时无解.对m>4,m为偶数时,如1 2 3 4 5 6 ...

  6. pycharm2019+破解补丁

    事先声明,由于本人的pycharm已经装好,故部分图片来自网络,转载请注明地址 这篇博文以前是2018版本 后来换电脑重装时发现失效了 索性装的2019版本 具体步骤可以参考下面的删除线,新的补丁和激 ...

  7. 洛谷P1209修理牛棚题解

    题目 这个题一眼看上去是一个贪心,但是一个贪心题就一定要用一个贪心的做法来做吗,为什么不能写一个DP呢,这个题我们可以从他修理牛棚的角度来看,价值就是一个木板可以修几个,但是也同时消耗掉了一个木板的长 ...

  8. springMVC整理05--数据校验、格式化 & 其他注解 & 数据绑定流程

    1.  数据校验.数据格式化 参考博客 http://www.importnew.com/19477.html 1.1  数据校验 使用 spring 数据校验,先要导入校验器的 jar: <! ...

  9. Hibernate结合JPA05

    一. JPA简介 JPA是Java Persistence API的简称,中文名Java持久层Api,是JDK1.5注解或者Xml描述对象-关系表的映射关系,并将运行期的实体类对象持久化Dao数据库中 ...

  10. Codeforces191 C. Fools and Roads

    传送门:>Here< 题意:给出一颗树,和K次操作.每次操作给出a,b,代表从a到b的路径上所有边的权值都+1(边权最开始全部为0).最后依次输出每条边最终的权值 解题思路: 由于n非常大 ...