还记得这是以前看上去的不可做题……

Description

奶牛们打算通过锻炼来培养自己的运动细胞,作为其中的一员,贝茜选择的运动方式是每天进行N(1<=N<=10,000)分钟的晨跑。在每分钟的开始,贝茜会选择下一分钟是用来跑步还是休息。贝茜的体力限制了她跑步的距离。更具体地,如果贝茜选择在第i分钟内跑步,她可以在这一分钟内跑D_i(1<=D_i<=1,000)米,并且她的疲劳度会增加1。不过,无论何时贝茜的疲劳度都不能超过M(1<=M<=500)。如果贝茜选择休息,那么她的疲劳度就会每分钟减少1,但她必须休息到疲劳度恢复到0为止。在疲劳度为0时休息的话,疲劳度不会再变动。晨跑开始时,贝茜的疲劳度为0。还有,在N分钟的锻炼结束时,贝茜的疲劳度也必须恢复到0,否则她将没有足够的精力来对付这一整天中剩下的事情。请你计算一下,贝茜最多能跑多少米。

Input

* 第1行: 2个用空格隔开的整数:N 和 M
* 第2..N+1行: 第i+1为1个整数:D_i

Output

* 第1行: 输出1个整数,表示在满足所有限制条件的情况下,贝茜能跑的最大距离


题目分析

我们可以自然地想到二维dp,用$f[i][j]$表示$i$分钟时疲劳度为$j$的最大答案值。

这题难就难在转移有限制条件:如果接下去要休息那么必须继续休息到0才行

考虑这个限制条件的另一种表述方式:我们的$f[i][j]$只能转移到$f[i+j][0]$,而不能使$f[i+k][j-k]$都更新一遍。原因是若$f[i+k][j-k]$被更新了,它在之后的转移中就会被当做是一个独立的状态而不被限制。

那么就考虑完了这个限制条件,套上去做就可以了。

还有要注意的一点是:奶牛在疲劳度为0的时候可以继续休息。样例非常良心地给出了这种情况。

 #include<bits/stdc++.h>

 int n,m;
int f[][],d[]; int main()
{
scanf("%d%d",&n,&m);
for (int i=; i<=n; i++) scanf("%d",&d[i]);
for (int i=; i<=n; i++)
{
for (int j=; j<=std::min(m, i); j++)
if (j){
f[i][j] = std::max(f[i-][j-]+d[i], f[i][j]);
if (i+j <= n)
f[i+j][] = std::max(f[i+j][], f[i][j]);
}else f[i][j] = std::max(f[i][j], f[i-][j]);
}
printf("%d\n",f[n][]);
return ;
}

END

最新文章

  1. 关于C#使用Dllimport 导入vc++动态库后网站部署提示 “无法加载 DLL,找不到指定模块”的解决方法。
  2. 关于Xcode7更新之后使用 SDWebImage 图片加载不出来
  3. 【转】编译quickfast解析库(沪深level2行情转码库)
  4. Activity初步,初学者必看
  5. Sprite的原点
  6. asp.net解析请求报文
  7. HDU 4638-Group(线段树+离线处理)
  8. 自己学会汉化DevExpress控件[转]
  9. 直接下载Google Play市场的APK
  10. node.js在windows下的学习笔记(2)---简单熟悉一些命令
  11. MongoDB笔记(一)MongoDB概述和安装
  12. discuz 门户页模板中的keywords和description不能正常显示
  13. Java并发Fork-Join框架原理解析
  14. DEVICE_ATTR实例分析
  15. 安装Office2016遇到“无法流式传输Office”问题
  16. Global Error Handling in ASP.NET Web API 2(webapi2 中的全局异常处理)
  17. cc2650-cc2640蓝牙开发准备手记
  18. Android 关于缓存的一些类
  19. git学习笔记:一台电脑上配置两个git账户
  20. Unity3D与C#网站收藏

热门文章

  1. .netcore--Controller后台实现企业微信发送消息
  2. 远程kafka通信实例,各种bug解决----虚拟机+本地电脑
  3. TTM-To the moon
  4. PostgreSQL-2-用户权限管理
  5. hashCode方法里为什么选择数字31作为生成hashCode值的乘数
  6. 牛客寒假6-A.出题
  7. JavaScript特点、优缺点及常用框架
  8. FXP登录Linux报错
  9. 【5岁小孩都会】vs2013如何进行单元测试
  10. WIN32项目中MFC程序窗口居中