POJ 2385 DP】的更多相关文章

题意:在苹果树下,初始在第一棵树下,告诉你在第几秒的时候,那棵树下会落下苹果,告诉最多能移动的次数,然后来回移动,求能得到的最大的苹果数目. 思路:三维DP,d[第i秒][已经移动j次][当前在(1,2)棵树下],背包优化,DP尽可能让状态简单一点,有时候 维数 越大越好,以免更多的if else : 两种状态: dp[i][j][1] = max(dp[i - 1][j - 1][2], dp[i - 1][j][1]) + (num[i] == 1);///在第1棵树下,如果num[i]==…
poj 2385 Apple Catching Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 14007   Accepted: 6838 Description It is a little known fact that cows love apples. Farmer John has two apple trees (which are conveniently numbered 1 and 2) in his…
题意:又是Bessie 这头牛在折腾,这回他喜欢吃苹果,于是在两棵苹果树下等着接苹果,但苹果不能落地后再接,吃的时间不算,假设他能拿得下所有苹果,但是这头牛太懒了[POJ另一道题目说它是头勤奋的奶牛,我也不知道说什么好了],他只愿意移动W次,问你在T时间内能拿到的最多的苹果是多少? 想法:根据题目解释,最开始在第一棵或者第二棵树都没关系,就看你要不要移动一次,状态转移方程是dp[i][j] = max(dp[i-1][j-1],dp[i-1][j]),其中i代表时间,其中j是代表来回的次数,如果…
牛如何吃苹果 问题大意:一个叫Bessie的牛,可以吃苹果,然后有两棵树,树上苹果每分钟会掉一个,这只牛一分钟可以在两棵树中往返吃苹果(且不吃地上的),然后折返只能是有限次W,问你这只叫Bessie的牛最多可以吃到多少个苹果 首先我们应该很容易想到,这个必须要用DP去做,然后就是考虑怎么储存旧值的问题了,因为树有两棵,然后每个往返状态对应不同的结果,所以我们应该用一个二维矩阵去储存(苹果的个数就不重要了,因为我们只用算到最后,前面的都可以扔掉). 然后状态方程应该怎么写呢?也很简单,定义一个状态…
Description It and ) in his field, each full of apples. Bessie cannot reach the apples when they are on the tree, so she must wait for them to fall. However, she must catch them in the air since the apples bruise when they hit the ground (and no one…
题意:2棵苹果树在T分钟内每分钟随机由某一棵苹果树掉下一个苹果,奶牛站在树#1下等着吃苹果,它最多愿意移动W次,问它最多能吃到几个苹果.思路:不妨按时间来思考,一给定时刻i,转移次数已知为j, 则它只能由两个状态转移而来.即上一时刻同一棵树或上一时刻不同的树    dp[i][j] = max(dp[i-1][j], dp[i-1][j-1]);则这一时刻在转移次数为j的情况下最多能接到的苹果为那两个状态的最大值再加上当前能接受到的苹果.(注意当前能否拿到苹果只与转移次数有关)    if (j…
Apple Catching   Description It is a little known fact that cows love apples. Farmer John has two apple trees (which are conveniently numbered 1 and 2) in his field, each full of apples. Bessie cannot reach the apples when they are on the tree, so sh…
题意:有树1 树2 会掉苹果,奶牛去捡,只能移动w次,开始的时候在树1 问最多可以捡多少个苹果? 思路: dp[i][j]表示i分钟移动j次捡到苹果的最大值 实例分析 0,1  1,2...说明 偶数在树1 奇数在树2 for (int i = 1; i <= n; i++) { scanf("%d", &t[i]); t[i] -= 1; } for (int i = 1; i <= n; i++) for (int j = 0; j <= w; j++)…
题意 : 有两颗苹果树,在 1~T 的时间内会有两颗中的其中一颗落下一颗苹果,一头奶牛想要获取最多的苹果,但是它能够在树间转移的次数为 W 且奶牛一开始是在第一颗树下,请编程算出最多的奶牛获得的苹果数 分析 : 这题是不可能爆搜的,可组合的情况实在太多....... 定义 dp[ i ][ j ] ==> 在第 i 个时间点下已经转移了 j 次的最多苹果数是多少 根据定义和奶牛一开始在一号树这个条件,所以初始化时有两种情况 如果第一个时间点落下苹果的是一号树则初始化 dp[ 1 ][ 0 ] =…
题意:有两棵树,标号为1和2,在Tmin内,每分钟都会有一个苹果从其中一棵树上落下,问最多移动M次的情况下(该人可瞬间移动),最多能吃到多少苹果.假设该人一开始在标号为1的树下. 分析: 1.dp[x][y][z]---第x分钟移动了y次的情况下,现在位于标号为z的树下最多吃到的苹果数. 2.枚举所有的时间.次数和可能位于的树下. 若第i分钟该人位于标号为k的树下,第i + 1分钟苹果从标号为a[i+1]的树上落下. (1)k==a[i], 此人站在标号为k的树下不移动,即可再吃到一个苹果:dp…