【USACO】贝茜的晨练计划
来源:互联网 发布:软件测试项目描述 编辑:程序博客网 时间:2024/04/25 08:59
【USACO】贝茜的晨练计划
题目:
奶牛们打算通过锻炼来培养自己的运动细胞,作为其中的一员,贝茜选择的运动方式是每天进行N(1 <= N <= 10,000)分钟的晨跑。
在每分钟的开始,贝茜会选择下一分钟是用来跑步还是休息。贝茜的体力限制了她跑步的距离。更具体地,如果贝茜选择在第i分钟内跑步,她可以在这一分钟内跑D_i(1 <= D_i <= 1,000)米,并且她的疲劳度会增加1。不过,无论何时贝茜的疲劳度都不能超过M(1 <= M <= 500)。如果贝茜选择休息,那么她的疲劳度就会每分钟减少1,但她必须休息到疲劳度恢复到0为止。在疲劳度为0时休息的话,疲劳度不会再变动。晨跑开始时,贝茜的疲劳度为0。还有,在N分钟的锻炼结束时,贝茜的疲劳度也必须恢复到0,否则她将没有足够的精力来对付这一整天中剩下的事情。
请你计算一下,贝茜最多能跑多少米。
输入:
第1行: 2个用空格隔开的整数:N 和 M
第2..N+1行: 第i+1为1个整数:D_i
输出1个整数,表示在满足所有限制条件的情况下,贝茜能跑的最大距离。
比赛时神速想到DP
A了样例后就没理了
(一般DP题我都不抱有什么希望)
没想到分数下来
AC!!!
我和我的小伙伴们都惊呆了...
我们用f[i,j]表示奶牛跑了i分钟,疲劳值为j所能跑到的最远距离
如果j=0那么往前找
把f[i,j]赋值为f[i-k,k](设k表示休息了k分钟)
j!=0的话
f[i,j]=max(f[i,j],f[i-1,j-1]+a[i]);
标程:
var f:array[0..10000,0..500]of longint; d:array[0..10000]of longint; n,m,i,j,k,l,s,x:longint;function max(a,b:longint):longint;begin if a>b then exit(a) else exit(b); end;begin readln(n,m); for i:=1 to n do readln(d[i]); for i:=1 to n do for j:=0 to m do begin if j=0 then for k:=0 to m do if i-k>=0 then begin f[i,j]:=max(f[i,j],f[i-k,k]); f[i,j]:=max(f[i,j],f[i-k,0]); end; if j>0 then f[i,j]:=max(f[i-1,j-1]+d[i],f[i,j]); end; writeln(f[n,0]);end.
阅读全文
1 1
- 【USACO】贝茜的晨练计划
- ACM 146. [USACO Jan08] 贝茜的晨练计划(dp)
- JZOJ__Day 10:【普及模拟】【USACO】贝茜的晨练计划
- 贝茜的晨练计划
- usaco 月赛 2008 January Best Cow Line 贝茜的晨练计划 题解
- 【动态规划】贝茜的晨练计划
- wikioi1578 贝茜的晨练计划 dp
- [Tyvj 2476]贝茜的晨练计划
- 贝茜的晨练计划(cowrun)
- 【u025】贝茜的晨练计划
- [Usaco2007 Jan]Running贝茜的晨练计划
- 编程题目《[usaco2008jan_silver]贝茜的晨练计划》题解
- BZOJ 1613: [Usaco2007 Jan]Running贝茜的晨练计划
- BZOJ1613 [Usaco2007 Jan]Running贝茜的晨练计划
- bzoj1613 【Usaco2007 Jan】Running 贝茜的晨练计划
- BZOJ1613 [Usaco2007 Jan]Running贝茜的晨练计划
- BZOJ1613 [Usaco2007 Jan]Running贝茜的晨练计划
- 【动态规划】贝茜的晨练计划 cowrun.pas/c/cpp
- Android电话设置黑名单,来电自动挂断
- jzoj 高中 1285——奶酪厂
- Bitmap二次采样处理图片
- SQL学习笔记:一些高级语句
- 51Nod-1494-选举拉票
- 【USACO】贝茜的晨练计划
- Java基础
- POJ 3122 Pie 笔记
- 寻找素数对
- 07-11____07-14
- 序列模型中的注意力机制
- 闲聊Mysql的锁与事务和java中的锁机制
- LintCode-最大子数组 II
- 初识JavaScript,Ajax,jQuery,并比较三者关系