POJ 2385 Apple Catching [DP]

原创 2012年03月22日 12:57:33

题意:

很久很久以前,山上有两棵苹果树,每一分钟,其中一棵就会掉下一颗苹果。

树下有一只牛,好吃懒做。

每一分钟只可以出现在某一棵苹果树下面,因为他没有买分身斧,dotaer都懂的。

问给定一个奔跑次数,怎样奔跑才能吃到的苹果数量最多。


思路:

dp。

申请一个二维数组dp [ j ] [ w ] 。j 代表此状态下 剩余奔跑速度 j 的条件下 ,站在w树下的最大吃到苹果树 ( w=0或者1)。

其实本来是三维dp [ i ][ j ][ w ],i代表在第 i 分钟,但是因为 i 状态下只跟 i -1 状态有关,可以进行空间优化。


w是读取的此分钟时,哪棵树掉苹果。

状态转移方程如下:

			dp[j][w]=Max(dp[j+1][1-w],dp[j][w])+1;
			dp[j][1-w]=dp[j][1-w];

最后要注意的是看一下discuss,牛刚开始其实是站在哪棵树下都可以。


#include<iostream>
#include<vector>
#include<string>
#include<queue>
#include<cmath>
#include<algorithm>
#define llong long long
#define Min(a,b) (a<b?a:b)
#define Max(a,b) (a>b?a:b)
#define Abs(a) ((a)>0?(a):-(a))
#define Mod(a,b) (((a)-1+(b))%(b)+1)
using namespace std;
int n,m;
const int N=1005;
const int M=35;
const int inf=99999999;
int dp[M][2];
int main()
{
	int w;
	scanf("%d%d",&n,&m);
	for(int j=0;j<=m;j++)
	{
		dp[j][1]=-inf;
		dp[j][0]=-inf;
	}
	dp[m][0]=dp[m][1]=0;
	for(int i=1;i<=n;i++)
	{
		scanf("%d",&w);
		w--;
		for(int j=0;j<=m;j++)
		{
			dp[j][w]=Max(dp[j+1][1-w],dp[j][w])+1;
			dp[j][1-w]=dp[j][1-w];
		}
	}
	int ans=0;
	for(int i=0;i<=m;i++)
	{
		ans=Max(ans,dp[i][0]);
		ans=Max(ans,dp[i][1]);
	}
	printf("%d\n",ans);
	return 0;
}



poj2385Apple Catching动归

Apple Catching Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 11435   Accepted: ...

poj 2385 Apple Catching dp

《挑战》练习题,基础dp。

POJ 2385 Apple Catching 递推

Apple Catching Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 11546   Accepted: ...

POJ - 2385 Apple Catching解题报告

题目大意: 有个牛,好多题了,都是牛。然后她想吃苹果。有两个树,单位时间,在一棵树上会掉下来一个苹果。她必须在这个时间正好站到了这棵树下,才能吃到这个苹果。现在给你一共有T(1000)个单位时间,以及...

POJ 2385 Apple Catching (DP)

Apple Catching http://poj.org/problem?id=2385 Time Limit:1000MS      Memory Limit:65536KB ...

POJ2385——Apple Catching(动态规划)

题目链接        这道题听说是很水的DP入门题。然而,我连入门题都不会。看别人的题解弄的,关键点就是要抽象出问题的状态转移,其状态转移方程为 dp[i][j] = max(dp[i-1][...

【POJ2385】Apple Catching(简单DP)

题目大意:两棵树,有T秒钟,每秒钟都会下落一个苹果,接下来T行表示下落苹果的树的编号。最多有W次交换次数,初始在1树。 dp[i][j] = max(dp[i-1][j],dp[i-1][j-1])...

动规-POJ【2385】Apple Catching

题目链接:POJ【2385】Apple Catching 题目大意:1、2两棵树上往下落苹果 树下一头牛 初始位置在第一棵树下 牛的移动所消耗时间不计(即可以瞬移) 但只能移动W次 一共掉T次苹果...

POJ 2385 Apple Catching DP

有两棵树,一开始站在第一棵树,每秒有苹果从树上掉下(不会同时两棵树都有),你最多移动w次,求t秒后你能得到的最大的苹果数目。...

POJ2385 Apple Catching 【DP】

Apple Catching Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8018   Accepted: 3...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:POJ 2385 Apple Catching [DP]
举报原因:
原因补充:

(最多只允许输入30个字)