#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cstdlib>
using namespace std; int T, W; //T 时间内 , W : 来回的次数
const int maxn = + ;
int apple[maxn + ];
/*
dp[i][j]: 给定时刻i, 转移次数已知为 j
:即上一时刻同一棵树 或 上一时刻 不同的树
:则这一时刻在转移次数为j的情况下最多能接到的苹果为:
那两个状态的最大值 + 当前能接受到的苹果。 dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - 1])
if (j % 2 + 1 == i ) {
dp[i][j]++;
}
*/
int dp[maxn + ][maxn + ]; void solve()
{
scanf("%d%d", &T, &W);
for (int i = ; i <= T; i++) {
scanf("%d", &apple[i]);
} memset(dp, , sizeof(dp)); for (int i = ; i <= T; i++)
{
// j 为 转移次数
for (int j = ; j <= W; j++) {
if (j == ) {
dp[i][j] = dp[i - ][j];
}
else {
//上一时同一棵树 + 上一时不同的树
dp[i][j] = max(dp[i - ][j], dp[i - ][j - ]);
}
// j:转移次数,apple[i]:i时刻的树号 0, 1
// j为偶数,在第一课树下时候 ||
// j为奇数, 在第二课树下时候, 只有转移的时候,并且当前时刻也有苹果下降,才去+1
if (j % == apple[i] - ) {
dp[i][j]++;
}
}
}
int ans = dp[T][];
  //已知T时刻,各个转移次数之间进行比较
for (int i = ; i <= W; i++) {
if (ans < dp[T][i]) {
ans = dp[T][i];
}
}
printf("%d\n", ans); } int main()
{
solve(); return ;
}

动态规划:POJ No 2385 Apple Catching的更多相关文章

  1. 【POJ】2385 Apple Catching(dp)

    Apple Catching Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 13447   Accepted: 6549 D ...

  2. poj 2385 Apple Catching 基础dp

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

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

    传送门 https://www.cnblogs.com/violet-acmer/p/9852294.html 题意: 有两颗苹果树,在每一时刻只有其中一棵苹果树会掉苹果,而Bessie可以在很短的时 ...

  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】

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

  6. POJ 2385 Apple Catching

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

  7. POJ 2385 Apple Catching(01背包)

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

  8. POJ 2385 Apple Catching ( 经典DP )

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

  9. POJ - 2385 Apple Catching (dp)

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

随机推荐

  1. 论文《Network in Network》笔记

    论文:Lin M, Chen Q, Yan S. Network In Network[J]. Computer Science, 2013. 参考:关于CNN中1×1卷积核和Network in N ...

  2. EJB是什么

    EJB (enterprise java bean)   EJB 概念的剖析 我们先看一下,EJB 的官方解释: 商务软件的核心部分是它的业务逻辑.业务逻辑抽象了整个商务过程的流程,并使用计 算机语言 ...

  3. VR论文调研

    IEEE VR 2018 1.Avatars and Virtual Humans--人物和虚拟人物 2.Augmented Reality--增强现实 3.Body and Mind--人体和思想( ...

  4. 第九周(11.11-11.17)----Beta版本视频发布

    beta阶段视频发布地址: http://v.youku.com/v_show/id_XMTgxNjE2NzY3Mg==.html

  5. 在linux中安装jdk以及tomcat并shell脚本关闭启动的进程

    在命令行模式中输入uname -a ,如下图,当界面展示i386就说明本linux系统为32版本,就在官网下载对应jdk版本,或者直接到我的网盘上下载http://pan.baidu.com/s/1c ...

  6. 利用stream对map集合进行过滤

    最近公司在大张旗鼓的进行代码审核,从中也发现自己写代码的不好习惯.一次无意的点到了公司封装的对map集合过滤的方法,发现了stream.于是研究了一下.并对原有的代码再次结合Optional进行重构下 ...

  7. Java将其他数据类型转换成JSON字符串格式

    Student.java package com.demo.servlet; import java.util.List; import java.util.Map; public class Stu ...

  8. expect ssh 自动登录 example

    #!/usr/bin/expect -f set ip [lindex $argv ] set port [lindex $argv ] set username [lindex $argv ] se ...

  9. c++11 可变参数模板类

    c++11 可变参数模板类 #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <string> #inc ...

  10. 快速配置java环境变量

    右键单击计算机--->属性 点击 “高级系统设置”--->"环境变量",出现环境变量设置窗口 系统变量--->新建 JAVA_HOME变量,变量值填写jdk安装路 ...