poj 2385 Apple Catching(记录结果再利用的动态规划)

时间:2023-01-12 08:16:26

传送门

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

题意:

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

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

题解:

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

  据此写出状态转移方程:

poj 2385 Apple Catching(记录结果再利用的动态规划)

  如何判断在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&lpar;dp&rpar;

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

  5. POJ 2385 Apple Catching &lpar; 经典DP &rpar;

    题意 : 有两颗苹果树,在 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. 记录结果再利用的&quot&semi;动态规划&quot&semi;之背包问题

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

  9. 记录结果再利用的&quot&semi;动态规划&quot&semi;

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

随机推荐

  1. Python virtualenv安装库报错SSL&colon; CERTIFICATE&lowbar;VERIFY&lowbar;FAILED

    Python virtualenv安装库报错SSL: CERTIFICATE_VERIFY_FAILED 问题描述 使用pip按照virtualenv报错,如下: pip install virtua ...

  2. JAVA定义接口格式&colon;

    [public]interface 接口名称 [extends父接口名列表] { //静态常量 [public] [static] [final] 数据类型变量名=常量值; //抽象方法 [publi ...

  3. linux修改网卡名称

    本文转载自江一<linux修改网卡名称> 终端输入:vi /etc/udev/rules.d/70-persistent-net.rules 出现以下文件 # This file was ...

  4. Machine Schedule(最小覆盖)

    其实也是个最小覆盖问题 关于最小覆盖http://blog.csdn.net/u014665013/article/details/49870029 Description As we all kno ...

  5. &lbrack;转载&rsqb;再谈iframe自适应高度

    Demo页面:主页面 iframe_a.html ,被包含页面 iframe_b.htm 和 iframe_c.html 下面开始讲: 通过Google搜索iframe 自适应高度,结果5W多条,搜索 ...

  6. java学习之反射机制

    java语言区别于C,C++等准静态语言的最大特点就是java的反射机制.静态语言的最直接定义就是不能在运行时改变程序结构或变量的类型.按照这样的定义,python,ruby是动态语言,C,C++,J ...

  7. Xamarin 后台持续定位与提示

    IOS后台持续运行对于c#程序员不懂得ios后台机制的是存在一定困扰的.特别是ios9过后对后台和安全进行了更严格的限制 好了废话不多说 一 设置info.plist权限信息 参考: 后台模式:htt ...

  8. JSP内置对象---总结

     request: javax.servlet.http.HttpServletRequest的接口实例 1. setCharacterEncoding("GBK"):防乱码2. ...

  9. Docker建立本地Registry

    从容器运行一个Registry # docker run -p : registry 查看yelinyuntest/static_web镜像 # docker images yelinyuntest/ ...

  10. Python内置函数&lpar;23&rpar;——format

    英文文档: format(value[, format_spec]) Convert a value to a “formatted” representation, as controlled by ...