计蒜客 难题题库 222 疲倦程度
来源:互联网 发布:中科数据恢复 编辑:程序博客网 时间:2024/05/17 06:33
奶牛Bessie有N分钟时间跑步,每分钟她可以跑步或者休息。若她在第i分钟跑步,可以跑出D_i米,同时疲倦程度增加1(初始为0)。若她在第i分钟休息,则疲倦程度减少1。无论何时,疲倦程度都不能超过M。另外,一旦她开始休息,只有当疲惫程度减为0时才能重新开始跑步。在第N分钟后,她的疲倦程度必须为0。
输入格式:
第一行,两个整数,代表N和M。 接下来N行,每行一个整数,代表D_i。
输出格式:
Bessie想知道,她最多能跑的距离。
N < = 2000 , M < = 500 , D_i < = 1000
样例1
输入:
5 2534210
输出:
9
/* 下面的程序不满足 一旦她开始休息,只有当疲惫程度减为0时才能重新开始跑步#include<iostream>using namespace std;const int maxn = 2002;const int maxm = 502;int d[maxn];int dp[maxn][maxm]; // dp[i][j] 表示前 i 分钟结束,疲劳程度为 j 能跑的最远距离int main(){ int n, m; cin >> n >> m; int i, j; for(i = 1; i <= n; ++i){ cin >> d[i]; } for(i = 1; i <= n; ++i){ dp[i][0] = max(dp[i - 1][0], dp[i - 1][1]); for(j = 1; j < m; ++j){ dp[i][j] = max(d[i] + dp[i - 1][j - 1], dp[i - 1][j + 1]); } dp[i][m] = d[i] + dp[i - 1][j - 1]; } cout << dp[n][0] << endl;}*/#include<iostream>using namespace std;const int maxn = 10010; // 骗子,说好的 N <= 2000的呢?const int maxm = 510;int d[maxn];int dp[maxn][maxm][2]; // dp[i][j][0] 表示第 i 分钟不跑的话,前 i 分钟结束,疲劳程度为 j 能跑的最远距离// dp[i][j][1] 表示第 i 分钟跑的话,前 i 分钟结束,疲劳程度为 j 能跑的最远距离int main(){ int n, m; cin >> n >> m; n = min(n, maxn - 1); m = min(m, maxm - 1); int i, j; for(i = 1; i <= n; ++i){ cin >> d[i]; } for(i = 1; i <= n; ++i){ // 不跑 // 第 i 分钟不跑,结束时疲惫程度为 0 dp[i][0][0] = max(max(dp[i - 1][0][0], dp[i - 1][1][0]), max(dp[i - 1][0][1], dp[i - 1][1][1]) ); // 第 i 分钟不跑,结束时疲惫程度为 j for(j = 1; j < m; ++j){ dp[i][j][0] = max(dp[i - 1][j + 1][0], dp[i - 1][j + 1][1]); } // 第 i 分钟不跑,结束时疲惫程度为 m,不可能 dp[i][m][0] = 0; // 跑 // 第 i 分钟跑,结束时疲惫程度为 0,不可能 dp[i][0][1] = 0; // 第 i 分钟跑,结束时疲惫程度为 1,前一分钟只能没跑,且疲劳程度为 0 dp[i][1][1] = d[i] + dp[i - 1][0][0]; // 第 i 分钟跑,结束时疲惫程度为 j,j >= 2, j - 1 >= 1,所以第 i - 1 分钟只能跑 for(j = 2; j <= m; ++j){ dp[i][j][1] = d[i] + dp[i - 1][j - 1][1]; } } cout << dp[n][0][0] << endl;}
0 0
- 计蒜客 难题题库 222 疲倦程度
- 计蒜客 难题题库 026 等差数列
- 计蒜客 难题题库 032 罗马数字
- 计蒜客 难题题库 034 灌溉
- 计蒜客 难题题库 217 阶乘
- 计蒜客 难题题库 002 整除问题
- 计蒜客 难题题库 003 判断质数
- 计蒜客 难题题库 005 矩阵翻转
- 计蒜客 难题题库 006 泥塑课
- 计蒜客 难题题库 007 奇怪的国家
- 计蒜客 难题题库 008 字符串长度
- 计蒜客 难题题库 009 元素移除
- 计蒜客 难题题库 010 寻找插入位置
- 计蒜客 难题题库 015 单独的数字
- 计蒜客 难题题库 016 爬楼梯
- 计蒜客 难题题库 017 X的平方根
- 计蒜客 难题题库 018 跳跃游戏
- 计蒜客 难题题库 019 加一
- isis协议第一个Hello包
- 泛型的for循环
- 黑马程序员-集合框架(一)
- 设计模式之-----职责链模式
- 锂电池的充电电压和电流应该是多少
- 计蒜客 难题题库 222 疲倦程度
- 15-StringBuffer-12-常用对象API(StringBuilder类)
- ffmpeg视频相关名词解释
- opencontrail编译contrail-web-core时需要安装的外部工具nodejs
- instancetype和id的区别
- 百度2014研发类校园招聘笔试题解答
- redis集群(主从配置)
- 字符串合并并处理
- 计蒜客 难题题库 223 字母排序