【bzoj1613】【Usaco2007 Jan】Running贝茜的晨练计划(dp) 题解&代码
2016-05-16 21:50
288 查看
题目链接:
http://www.lydsy.com/JudgeOnline/problem.php?id=1612
题解:
这道题的dp还是很好想的,看了数据范围就知道复杂度肯定是n*m的,这样的话用dp[i][j]表示前i分钟疲劳度为j时的最大运动距离,dp转移方程如下:
代码:
http://www.lydsy.com/JudgeOnline/problem.php?id=1612
题解:
这道题的dp还是很好想的,看了数据范围就知道复杂度肯定是n*m的,这样的话用dp[i][j]表示前i分钟疲劳度为j时的最大运动距离,dp转移方程如下:
dp[i][j]=dp[i-1][j-1]+d[i]; if (i-j>=0) dp[i][0]=max(dp[i][0],dp[i-j][j]); dp[i][0]=max(dp[i-1][0],dp[i][0]);
代码:
#include<iostream> #include<algorithm> #include<stdio.h> using namespace std; int n,m,d[10005],dp[10005][505]; int main() { scanf("%d%d",&n,&m); for (int i=1;i<=n;i++) scanf("%d",&d[i]); for (int i=1;i<=n;i++) { for (int j=1;j<=m;j++) { dp[i][j]=dp[i-1][j-1]+d[i]; if (i-j>=0) dp[i][0]=max(dp[i][0],dp[i-j][j]); } dp[i][0]=max(dp[i-1][0],dp[i][0]); } printf("%d\n",dp [0]); }
相关文章推荐
- 基于UDP套接字编程实例
- java学习总结(16.05.16)java的标识符和命名规则
- [javaSE] 数组(获取最值)
- Java再学习-简单回调函数
- java基础第八天
- Java基础-第7天
- 343. Integer Break
- Installing on Raspberry PI/Raspbian from source
- eclipse导入JDK源码
- 1006. 换个格式输出整数 (15)
- spring 引入命名空间简介
- Windows下Eclipse+PyDev安装Python开发环境
- spring 数据连接泄漏
- php单例模式
- python中模拟进行ssh命令的执行
- spring数据连接泄漏
- python中模拟进行ssh命令的执行
- Java面向对象之继承
- Java面向对象之多态
- 深入java之java语言基础(一)