POJ 3361 Running
2015-10-30 13:35
441 查看
题意:给你一个n,m,n表示有n分钟,每i分钟对应的是第i分钟能跑的距离,m代表最大疲劳度,每跑一分钟疲劳度+1,当疲劳度==m,必须休息,在任意时刻都可以选择休息,如果选择休息,那么必须休息到疲劳度为0,当然,当疲劳度为0的时候也是可以继续选择休息的,求在n分钟后疲劳度为0所跑的最大距离
dp[i][j]表示第i分钟疲劳度为j时所跑的最大距离。
在疲劳度为0时,我们可以继续休息。则此时有转移方程:dp[i][0] = dp[i-1][0]。
由于如果休息的话,我们就一定要休息到疲劳度为0,所以对于 0 < k <= min(m, i),有 dp[i][0] = min(dp[i][0], dp[i-k][k])。
如果不休息,显然有 dp[i][j] = dp[i-1][j-1] + d[i]。
所有的转移情况都讨论到了。要注意的是,题目要求我们在第n分钟的时候疲劳度一定为0,所以答案为dp
[0]。
代码:
dp[i][j]表示第i分钟疲劳度为j时所跑的最大距离。
在疲劳度为0时,我们可以继续休息。则此时有转移方程:dp[i][0] = dp[i-1][0]。
由于如果休息的话,我们就一定要休息到疲劳度为0,所以对于 0 < k <= min(m, i),有 dp[i][0] = min(dp[i][0], dp[i-k][k])。
如果不休息,显然有 dp[i][j] = dp[i-1][j-1] + d[i]。
所有的转移情况都讨论到了。要注意的是,题目要求我们在第n分钟的时候疲劳度一定为0,所以答案为dp
[0]。
代码:
#include <algorithm> #include <iostream> #include <sstream> #include <cstring> #include <cstdio> #include <vector> #include <string> #include <queue> #include <stack> #include <cmath> #include <set> #include <map> using namespace std; typedef long long LL; #define mem(a, n) memset(a, n, sizeof(a)) #define ALL(v) v.begin(), v.end() #define si(a) scanf("%d", &a) #define sii(a, b) scanf("%d%d", &a, &b) #define siii(a, b, c) scanf("%d%d%d", &a, &b, &c) #define pb push_back #define eps 1e-8 const int inf = 0x3f3f3f3f, N = 1e4 + 5, MOD = 1e9 + 7; int T, cas = 0; int n, m; int d , dp [505]; int main(){ #ifdef LOCAL freopen("/Users/apple/input.txt", "r", stdin); // freopen("/Users/apple/out.txt", "w", stdout); #endif while(sii(n, m) != EOF) { for(int i = 1; i <= n; i ++) si(d[i]); mem(dp, 0); for(int i = 1; i <= n; i ++) { dp[i][0] = dp[i-1][0]; for(int k = 1; k <= min(i, m); k ++) dp[i][0] = max(dp[i][0], dp[i-k][k]); for(int j = 1; j <= m; j ++) dp[i][j] = dp[i-1][j-1] + d[i]; } printf("%d\n", dp [0]); } return 0; }
相关文章推荐
- Android6.0版本和API level对应关系
- 有限5 位数
- ThinkPHP RBAC权限管理机制
- 面试前准备的问题
- 加密
- Uber中国在地方城市的人员架构是怎样的?
- 技术连接
- ORA-12170:TNS:连接超时解决办法
- 个人博客说明
- PHP的历史
- tmpfs 一种虚拟内存文件系统
- 线程
- congtentprovider获取通话记录
- JAVA vo pojo javabean dto区别
- 2015多校第二场总结
- 寄存器速记
- 从不同的角度吸取不同的观点
- iOS - 判断当前时间是否在某个时间段
- LeetCode---Construct Binary Tree from Preorder and Inorder Traversal
- Linux 下nice 函数用法提高一个进程的友善值