F - 你这是第一次让我看到落泪了呢 POJ - 3661

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

题意:N分钟,第i分钟能跑Di的长度;每分钟可以选择跑或者休息,跑+1疲劳值,休息-1疲劳,如果开始休息,必须等疲劳降低到0才开始跑;疲劳度不能超过M; N分钟后疲劳值必须为0;求最大路程

思路:dp[i][j]数组存第i分钟结束时疲劳值为j的最大路程;

刚开始是顺着题意来想的:休息 dp[i][j]=dp[i-1][j+1]
                                                      走 dp[i][j]=max ( dp[i-1][j-1](之前在走),(之前在休息)dp[i-1][0]  )+var[i]

但是这样走的那里不知道dp[i-1][j-1]究竟是在走还是休息。就在想能不能dp[i][j]里存的都是走的状态,然后发现输出是dp[N][0](N需要算的是停留的状态),就可以反过来想:走: dp[i][j ]= dp[i-1][j-1] + var[i]   (假设dp[i][j]里存的都是走的状态)

休息:dp[i][0]=max( dp[i][0], dp[i-j][j] )    (j指前面休息了j-1分钟)

#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <queue>
#include <map>
#include <set>
#include <stack>
#include <vector>
#define fora(i,a,b) for(i=a;i<b;i++)
#define fors(i,a,b) for(i=a;i>b;i--)
#define fora2(i,a,b) for(i=a;i<=b;i++)
#define fors2(i,a,b) for(i=a;i>=b;i--)
#define PI acos(-1.0)
#define eps 1e-6
#define INF 0x3f3f3f3ftypedef long long LL;
typedef long long LD;
using namespace std;
const int maxn=10000+5;
int N,M;
int var[maxn];
int dp[maxn][505];
void init()
{memset(dp,0,sizeof(dp));
}
int main()
{while(~scanf("%d%d",&N,&M)){init();int i,j;fora2(i,1,N){scanf("%d",var+i);}int ans=0;fora2(i,1,N){dp[i][0]=max(dp[i][0],max(dp[i-1][0],dp[i-1][1]));fora2(j,1,M)//选择走{if(j>i)break;dp[i][j]=dp[i-1][j-1]+var[i];}fora2(j,1,M)//i秒休息结束,共休息了j秒{if(i-j<j)break;dp[i][0]=max(dp[i][0],dp[i-j][j]);}}printf("%d\n",dp[N][0]);}return 0;
}

转载于:https://www.cnblogs.com/107acm/p/9428302.html

F - 你这是第一次让我看到落泪了呢 POJ - 3661Running 区间DP相关推荐

  1. 动态规划,且学且放弃

    文章目录 前言 记忆化搜索 动态规划的基本解题思路 背包问题 01背包 (待处理)P1489 猫狗大战 01背包的空间优化问题 P1048 采药 P1510 精卫填海 P1566 加等式 P1504 ...

  2. 上元节的灯会(灭)-区间dp

    题目背景 上元节的庙会上,牛宝靠自己的聪明才智成功破解了花灯阵,点亮了在场所有花灯,但他没料到的是这个游戏包含AB两个项目,A项目就是点亮所有花灯,而B项目则是熄灭所有花灯.不过点亮的是花灯阵,熄灭的 ...

  3. BZOJ 1032 JSOI 2007 祖码Zuma 区间DP

    题目大意:依照祖玛的玩法(任意选颜色),给出一段区间.问最少用多少个球可以把全部颜色块都消除. 思路:把输入数据依照连续的块处理.保存成颜色和数量.然后用这个来DP.我们知道,一个单独的块须要两个同样 ...

  4. 第13期:动态规划-dp题集

    1 P7972 [KSN2021] Self Permutation //[动态规划1]动态规划的引入 2 P1216 [USACO1.5][IOI1994]数字三角形 Number Triangle ...

  5. 【每日亿题#12】AtCoder Grand Contest 021 (A ~ F)全部题解

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 文章目录 AtCoder Grand Contest 021 题解 A. Digit Sum 2 B. ...

  6. Looksery Cup 2015 F - Yura and Developers 单调栈+启发式合并

    F - Yura and Developers 第一次知道单调栈搞出来的区间也能启发式合并... 你把它想想成一个树的形式, 可以发现确实可以启发式合并. #include<bits/stdc+ ...

  7. 鲍威尔法源程序码matlab,鲍威尔算法matlab程序f.doc

    鲍威尔算法matlab程序f.doc functionf=fun(x)f=10*(x(1)+x(2)-5)^2+(x(1)-x(2))^2;functionf=fx(x0,alpha,s)x1=x0+ ...

  8. 2021年美赛F题总结

    2021年美赛F题总结 肝到了早上六点20分才算是把F题的论文交上去了呜呜,最后把论文发给官方的时候3个人紧张死了,检查了7,8遍就怕出一点错,官方不接收我们的文章,那个点已经神志不清了,又在官网不停 ...

  9. HDU - 4734 F(x) (2013成都网络游戏,数字DP)

    意甲冠军:求0-B见面<=F[A]所有可能的 思维:数字DP,内存搜索 #include <iostream> #include <cstring> #include & ...

最新文章

  1. python之生成随机密码
  2. .net2.0中SqlBulkCopy批量复制数据出错原因分析!
  3. Armv8-A 架构概述
  4. wordpress怎么打开php网站,wordpress怎么做网站
  5. C++语言基础 —— STL —— 容器与迭代器 —— vector
  6. 智能会议系统(32)---WebRTC学习之三:录音和播放
  7. 支付宝发布“城市生活周”电影票预售成绩单:预售票房已涨20倍
  8. Python代码优化之in关键字
  9. netback于kthread遇到cpu affinity问题
  10. 华为今年不发布Mate系列新机;一加宣布与OPPO合并:将成为OPPO旗下独立品牌;Gradle 7.1 发布|极客头条...
  11. 毕业设计之校园一卡通管理系统的设计与实现
  12. 对外汉语语料库有哪些_【亲测】8大对外汉语必备语料库,每个都很有“性格”!!留学生汉语语料库...
  13. 解决MAC系统字体发虚,更换默认字体为微软雅黑
  14. pcie gen3 bios设置_性价比无敌or搞笑? A卡传统回来了!(附刷bios教程)
  15. msdia80.dll文件出现在磁盘根目录下的解决方案(转)
  16. 程序员的思维修炼--读书感悟
  17. 两款开关电源的纹波对比
  18. 转载《由于这台计算机没有远程桌面客户端访问许可证,远程会话被中断》的解决方案
  19. 04 : mysql 基础命令操作,字符集
  20. 首发于 monitor 写文章 重修微积分2——收敛 精选 zy han zy han 重修微积分2——收敛 精选 已有 12780 次阅读 2015-3-30 07:58 |个人分类:科普|

热门文章

  1. Anaconda简介以及安装
  2. USACO-Section2.2 Runaround Numbers
  3. zip伪加密破解方法
  4. Java 反射调用方法实例,动态动用方法实例
  5. Python 新式类与经典类
  6. python中的map、filter、reduce函数
  7. 有限自动机的构造与识别
  8. 瞎学的几天 ----java多线程和线程池
  9. 实现ABP中Person类的权限功能
  10. LamBda学习(一)