tyvj p1023(奶牛的锻炼)(100)
2012-12-02 11:42
232 查看
看起来不是很难,一道动规题(话说最近一直在刷动规题啊)
一开始只想到两个动规方程:
f[i,j]表示第i分钟,疲劳度为j所能跑的最大距离。
我们有:
f[i,j]:=f[i-1,j-1]+s[i];
f[i+j,0]:=max(f[i+j,0],f[i,j]);(若从此状态开始休息,那么他的距离是和f[i+j,0]一样的)
后面想想不对,还少了一个方程。
因为如果你休息到疲劳度为0,那么你即可以选择跑步,也可以选择继续休息,所以我们还有一个方程:
f[i,0]:=max(f[i-1,0],f[i,0])。
这样就好了。
其实第二个方程还可以写成另一种形式:f[i,j]:=max(f[i,j],f[i-j,0])。其实是一个意思,只不过是一个是从现在推出将来,另一个是从过去推出现在。
接下来就很容易了。
一开始只想到两个动规方程:
f[i,j]表示第i分钟,疲劳度为j所能跑的最大距离。
我们有:
f[i,j]:=f[i-1,j-1]+s[i];
f[i+j,0]:=max(f[i+j,0],f[i,j]);(若从此状态开始休息,那么他的距离是和f[i+j,0]一样的)
后面想想不对,还少了一个方程。
因为如果你休息到疲劳度为0,那么你即可以选择跑步,也可以选择继续休息,所以我们还有一个方程:
f[i,0]:=max(f[i-1,0],f[i,0])。
这样就好了。
其实第二个方程还可以写成另一种形式:f[i,j]:=max(f[i,j],f[i-j,0])。其实是一个意思,只不过是一个是从现在推出将来,另一个是从过去推出现在。
接下来就很容易了。
program p1023; uses math; var i,j,k,l,m,n:longint; s:array[0..20]of longint; f:array[0..20,0..50]of longint; begin read(n,m); for i:=1 to n do begin read(s[i]); end; for i:=1 to n do for j:=1 to m do begin if i>=j then f[i,0]:=max(f[i-1,0],f[i,0]); f[i,j]:=f[i-1,j-1]+s[i]; f[i+j,0]:=max(f[i+j,0],f[i,j]); end; write(f[n,0]); end.
相关文章推荐
- TYVJ P1023奶牛的锻炼(动态规划)
- [TYVJ] P1023 奶牛的锻炼
- TYVJ 1023 奶牛的锻炼(DP)
- TYVJ 1023 奶牛的锻炼
- |Tyvj|动态规划|1023 奶牛的锻炼
- Tyvj 题目1023 奶牛的锻炼(DP)
- tyvj 1023 奶牛的锻炼
- Tyvj 1023 奶牛的锻炼 dp
- DP练习 - 奶牛的锻炼
- USACO 奶牛的锻炼
- QUSTOJ1782 A奶牛的锻炼(线性动归)
- 奶牛的锻炼...dp
- Codevs 2161 奶牛的锻炼
- 奶牛的锻炼 DP
- 奶牛锻炼
- codevs2161 奶牛的锻炼
- Tyvj_P1023
- 奶牛的锻炼-线性dp
- 奶牛的锻炼
- TYVJ P1023 题解