poj3661:Running

Description

The cows are trying to become better athletes, so Bessie is running on a track for exactly N (1 ≤ N ≤ 10,000) minutes. During each minute, she can choose to either run or rest for the whole minute.

The ultimate distance Bessie runs, though, depends on her ‘exhaustion factor‘, which starts at 0. When she chooses to run in minute i, she will run exactly a distance of Di (1 ≤ Di ≤ 1,000) and her exhaustion factor will increase by 1 -- but must never be allowed to exceed M (1 ≤ M ≤ 500). If she chooses to rest, her exhaustion factor will decrease by 1 for each minute she rests. She cannot commence running again until her exhaustion factor reaches 0. At that point, she can choose to run or rest.

At the end of the N minute workout, Bessie‘s exaustion factor must be exactly 0, or she will not have enough energy left for the rest of the day.

Find the maximal distance Bessie can run.

Input

* Line 1: Two space-separated integers: N and M
* Lines 2..N+1: Line i+1 contains the single integer: Di

Output

* Line 1: A single integer representing the largest distance Bessie can run while satisfying the conditions.
 

Sample Input

5 2
5
3
4
2
10

Sample Output

9题解转移方程比较好理解,把疲劳为0单独处理,剩下的就比较好思考了。
 1 #include<cstdio>
 2 #include<algorithm>
 3 #include<cstring>
 4 using namespace std;
 5 int t,n,k;
 6 int f[10005][505];
 7 int main()
 8 {
 9     scanf("%d%d",&n,&k);
10     for(int i=1 ; i<=n ; ++i)
11     {
12         scanf("%d",&t);
13         for(int j=1 ; j<=k&&j<=i ; ++j)
14             f[i][j]=f[i-1][j-1]+t;
15         f[i][0]=f[i-1][0];
16         for(int j=1 ; j<=k&&i-j>=0 ; ++j)
17             f[i][0]=max(f[i-j][j],f[i][0]);
18     }
19     printf("%d",f[n][0]);
20     return 0;
21 }
				
时间: 2024-10-11 05:27:45

poj3661:Running的相关文章

POJ 3661:Running 区间DP

Running 题目链接: http://poj.org/problem?id=3661 题意: 有一只牛在跑步,在第 i 分钟它可以跑Ni米,疲惫值加1(疲惫值初始为0),或者休息一分钟,疲惫值减1(只有疲惫值到了0才能重新开始跑步),当匹配值达到M时它必须休息,且第N分钟结束时牛的疲惫值必须为0,求这只牛最远可以跑几米. 题解: 设dp[i][j]在 i 分钟里疲惫值限制为j的情况下牛可以跑的最远距离.一般情况下这样设就行了,但是因为题目限制只要开始休息就必须休息到疲惫值为0,所以这里将dp

Android 中文API:Running Gradle Builds

?    ? 一般来说,用gradle编译去生成apk,有两种编译设置,一种是调试用的-debug mode,一种是最终包-release mode.但是无论是哪种类型,app必须在安装到虚拟机或设备上必须签名.当编译为debug mode 的时候,用debug key.编译为release mode时候用private key. 无论是用debug还是release模式去编译,你都需要run and build你的module.这个过程会生成一个可以安装在模拟器或者设备上的apk.当你选择使用

团队博客--测试发布(队名:Running Duck)

代码链接:Tetris 码云地址 一.Alpha版本测试报告 1.测试计划 测试内容 1.方块生成下落 2.方块左右移动 3.方块快速下滑 4.本汉字替换 5.下一个汉字提示 6.方块颜色生成 7.汉字方块合并 8.游戏暂停和开始 9.背景音频 10.汉字合成分数变化 测试人员 陆海燕.蔡苑菲 测试时间 11.5-11.7 测试方法 android studio模拟器 安卓手机开启调试模式测试 质量目标 1-9功能正常,10功能附加 修复人员 马仪生 2.测试过程 测试截图 错误记录(提交iss

CCNA基础(四):路由器的备份升级和交换机的转发过滤

-----------------------------------  Cisco IOS文件系统和设备--------------------- 1.RAM(System):存放路由器正在操作的信息. 2.NVRAM(nvram):放配置文件. 3.Flash(flash):放IOS,相当于硬盘. 4.TFTP Server(tftp):导出配置文件. ----------------------------------------------------------------------

大开测试:性能—如何添加并运用附加变量(连载6)

7.6  如何添加并运用附加变量 1.问题提出 LoadRunner 11.0中[Vuser]>[Run-time Settings]>[General]>[Additionalattributes]配置选项是如何应用于性能测试的呢? 2.问题解答 LoadRunner 11.0提供了一个非常有用的功能,就是可以向脚本传递参数,可以测试并监控具有不同客户端参数的服务器. 通过选择[Vuser]>[Run-time Settings]>[General]>[Additio

安装Python的psutil模块时报错:error: command &#39;gcc&#39; failed with exit status 1

安装Python的psutil模块: tar zxvf psutil-2.0.0.tar.gz cd psutil-2.0.0 python setup.py install 报错: running install running bdist_egg ...... psutil/_psutil_linux.c:12:20: error: Python.h: No such file or directory In file included from psutil/_psutil_linux.c

java对象的内存布局(一):计算java对象占用的内存空间以及java object layout工具的使用

最近在学习java对象内存布局方面的一些知识,主要是想知道一个java对象到底占用多少内存空间,以及java对象在内存中到底是什么样子的.c/c++中的sizeof运算符能够方便地告诉我们一个变量占用的内存空间,但是在java中却没有直接提供这种机制.如果想获取java对象占用的内存大小,可以利用java的Instrumentation机制.java.lang.instrument.Instrumentation这个接口提供了getObjectSize(Object objectToSize),

wp8.1 Study6: App的生命周期管理

一.概述 应用程序的生命周期详解可以参照Windows8.1开发中msdn文档http://msdn.microsoft.com/library/windows/apps/hh464925.aspx 应用程序生命周期中有三个状态:Running(运行中),Suspended(挂起,暂停),NotRunning(终止).如图所示 那么Suspended与NotRuning有什么不同呢?Suspended意味着当用户切换到另一个程序,你的应用程序很可能将被暂停一段时间,直到用户切换回您的应用程序.在

lua学习笔记13:协程具体解释和举例

一.coroutine.create创建协程 參数是协程的主函数,返回一个thread对象 co = coroutine.create(function() print("coroutine execute!") end) 二.协程状态 协程有三种状态:挂起(suspended).执行(running)和死亡(dead) coroutine.status(co)返回协程当前的状态 协程创建完之后处于挂起状态 print(coroutine.status(co)) 输出: suspend