动态规划:POJ No 2385 Apple Catching
#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的更多相关文章
- 【POJ】2385 Apple Catching(dp)
Apple Catching Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 13447 Accepted: 6549 D ...
- poj 2385 Apple Catching 基础dp
Apple Catching Description It is a little known fact that cows love apples. Farmer John has two ap ...
- poj 2385 Apple Catching(记录结果再利用的动态规划)
传送门 https://www.cnblogs.com/violet-acmer/p/9852294.html 题意: 有两颗苹果树,在每一时刻只有其中一棵苹果树会掉苹果,而Bessie可以在很短的时 ...
- poj 2385 Apple Catching(dp)
Description It and ) in his field, each full of apples. Bessie cannot reach the apples when they are ...
- POJ 2385 Apple Catching【DP】
题意:2棵苹果树在T分钟内每分钟随机由某一棵苹果树掉下一个苹果,奶牛站在树#1下等着吃苹果,它最多愿意移动W次,问它最多能吃到几个苹果.思路:不妨按时间来思考,一给定时刻i,转移次数已知为j, 则它只 ...
- POJ 2385 Apple Catching
比起之前一直在刷的背包题,这道题可以算是最纯粹的dp了,写下简单题解. 题意是说cows在1树和2树下来回移动取苹果,有移动次数限制,问最后能拿到的最多苹果数,含有最优子结构性质,大致的状态转移也不难 ...
- POJ 2385 Apple Catching(01背包)
01背包的基础上增加一个维度表示当前在的树的哪一边. #include<cstdio> #include<iostream> #include<string> #i ...
- POJ 2385 Apple Catching ( 经典DP )
题意 : 有两颗苹果树,在 1~T 的时间内会有两颗中的其中一颗落下一颗苹果,一头奶牛想要获取最多的苹果,但是它能够在树间转移的次数为 W 且奶牛一开始是在第一颗树下,请编程算出最多的奶牛获得的苹果数 ...
- POJ - 2385 Apple Catching (dp)
题意:有两棵树,标号为1和2,在Tmin内,每分钟都会有一个苹果从其中一棵树上落下,问最多移动M次的情况下(该人可瞬间移动),最多能吃到多少苹果.假设该人一开始在标号为1的树下. 分析: 1.dp[x ...
随机推荐
- Teamwork(The eighth day of the team)
在经过算是蛮艰辛的努力后吧,我们终于有了一点点成果.虽然还离理想中的蛮遥远的,但是我们相信,虽然我们走得很慢,但是我们一直都会坚持前进.
- 数据结构复习笔记(ADT栈/LIFO表)
栈是一种特殊的表,只在表首进行插入和删除操作,表首称之为栈顶,表尾称为栈底:栈的核心原则是先进后出,简称Last In First Out(LIFO表):常用的运算有:1.是否为空栈判断:2.栈是否满 ...
- AT89C51的内部4K flash,
AT89C51的内部4K flash, 是用来下载程序代码的,程序运行时只能做读取数据操作,不能写入.单片机断电时需要候保存数据,可以选择 带EEPROM的单片机 就可以,如STC 系列的单片机有内部 ...
- 深入理解JAVA集合系列三:HashMap的死循环解读
由于在公司项目中偶尔会遇到HashMap死循环造成CPU100%,重启后问题消失,隔一段时间又会反复出现.今天在这里来仔细剖析下多线程情况下HashMap所带来的问题: 1.多线程put操作后,get ...
- Windows10(UWP)下的MEF
前言 最近在帮一家知名外企开发Universal Windows Platform的相关应用,开发过程中不由感慨:项目分为两种,一种叫做前人栽树后人乘凉,一种叫做前人挖坑后人遭殃.不多说了,多说又要变 ...
- 课堂作业:alpha发布点评
1. 新蜂 项目:游戏俄罗斯方块 基础玩法已实现,部分功能尚不完备,总的来说已经很出色了.不过希望下降加速那部分可以优化一下,不要按住↓加速,而是按一下就使当前方块加速下落至底部就好了. 2. 天 ...
- vue开发 ES5——> ES6设置
- HDU4183_Pahom on Water
题意为给你若干个圆,每个圆的颜色对应一个频率,如果两个圆有公共部分,那么这两个圆之间可以走,你可以从起点开始,从频率小的圆走向频率大的圆并且到达终点后,从频率大的圆走向频率小的圆,最终回到起点,路径中 ...
- Python学习---字符串操作
### 截取字符串然后拼接 str = "Hello World!" str2 = str[:6] + "tyche !" print(str2) ===> ...
- AFO NOI2018退役——菜鸡一直是菜鸡
游记DAY -INF连续几天的模拟让我确信我就是菜鸡.以及相信yxd,sjq,cyl神犇一定能够稳了. DAY 0报道,天很热热热热热热热热热. DAY 1开幕式,杜子德很热热热热热热热热热. DAY ...