~~~~~~~~ 一动态规划题~~珠海区域赛题目~~~~~~
acm吧
全部回复
仅看楼主
level 1

求下面题目的 状态转移方程 和 代码。
Description:N棵苹果树排成一行,第i棵苹果树上有Ai个苹果。设定连续的K棵苹果树中最多只能摘1棵树上的苹果,问最多能采到多少苹果。
Input: 有多组输入数据。每组数据的第一行为一个整数N(0=N<=100000),为苹果树的数量;第二行为一个正整数K,意义如题目中所描述;接下来的N行,每一行为一个正整数Ai(0<=Ai<=100),表示第i棵苹果树上的苹果数量。Output: 对于每一组输入,输出最大可摘的苹果数量,独占一行。
Sample Input 4 31253Sample Output5

2010年12月29日 10点12分 1
level 1
我可以不加任何优化的解决这个问题...
加优化的我还不太会
令f[i]为前i棵树所得到的最大苹果数
则有f[i]=max(f[i-1],f[i-k]+a[i])
这里ai如题意
边界条件是f[1..k]=a[1..k]
目标值是f[n]
显然时间复杂度为O(n)
关键代码
for i:=1 to k do f[i]:=a[i];
for i:=k+1 to n do f[i]:=max(f[i-1],f[i-k]+a[i]);
2010年12月29日 12点12分 2
1