poj-3661-二维dp
来源:互联网 发布:一分钟心理学 知乎 编辑:程序博客网 时间:2024/06/05 15:40
题意:
运动员跑n分钟,每分钟的疲劳度都不能超过m;
每分钟可以选择跑,或者休息。
第i分钟,如果跑的话,可以跑d[i]距离,疲劳度+1,如果休息的话,疲劳度-1。
问当n分钟过后,运动员疲劳度为0的情况下最多可以跑多少距离。
注意:如果休息的话,必须休息到疲劳度为0的时候,才可以继续跑。
做法:
设立数组:dp[i][j] 代表第i分钟疲劳度为j的时候跑的距离。
dp[i][j]=dp[i-1][j-1]+d[i];
dp[i][0]=dp[i-k][k];
输出dp[n][0]即可。
#include<stdio.h>#include<iostream>#include<string.h>#include<algorithm>#include<queue>#include<stack>#include<map>#include<string>#include<stdlib.h>#define INF_MAX 0x7fffffff#define INF 999999#define max3(a,b,c) (max(a,b)>c?max(a,b):c)#define min3(a,b,c) (min(a,b)<c?min(a,b):c)#define mem(a,b) memset(a,b,sizeof(a))using namespace std;struct node{ int u; int v; int w; bool friend operator < (node a, node b){ return a.w < b.w; }}edge[1001];int gcd(int n,int m){if(n<m) swap(n,m);return n%m==0?m:gcd(m,n%m);}int lcm(int n,int m){if(n<m) swap(n,m);return n/gcd(n,m)*m;}int dp[10001][501];int main(){ int n,m,i,j,k; int d[10001]; scanf("%d%d",&n,&m); for(i=1;i<=n;i++) { scanf("%d",&d[i]); } for(j=0;j<=m;j++)dp[0][j]=0; for(i=1;i<=n;i++) { for(j=1;j<=m;j++) { dp[i][j]=dp[i-1][j-1]+d[i]; } dp[i][0]=dp[i-1][0]; for(k=i-1;k>=0&&(i-k)<=m;k--) { dp[i][0]=max(dp[i][0],dp[k][i-k]); } } printf("%d\n",dp[n][0]); return 0;}
- poj-3661-二维dp
- poj 3257 二维dp
- poj 3257 二维dp
- POJ 2948 经典二维dp
- poj 3257(哈希+二维dp)
- POJ 1837 Balance(二维dp)
- poj 1976 A Mini Locomotive(二维dp)
- POJ 1404 I-Keyboard 二维dp
- POJ 1837 Balance DP 二维背包
- poj 1976 A Mini Locomotive (dp 二维01背包)
- poj 1948 Triangular Pastures (dp 二维01背包)
- POJ 2193 Lenny's Lucky Lotto Lists(简单二维dp)
- POJ 2948 Martian Mining(简单的二维dp)
- POJ 1948 (Triangular Pastures)二维背包 DP/DFS
- poj(1661)——Help Jimmy(二维dp)
- poj 1948 Triangular Pastures (二维背包dp)
- 【POJ 1948】Triangular Pastures(dp—二维01背包)
- (poj 1724 ROADS)<二维最短路+DP>
- poj 1995
- 链表基础及常见面试题
- android 中获取当前程序的版本号
- Android源码编译步骤
- 冒泡排序
- poj-3661-二维dp
- C#+SQL Server
- ios如何添加自定义字体
- 《一个操作系统的实现》(四):让操作系统走进保护模式
- ios 异常错误积累
- shell linux的程序运行机制
- android 英文字串中如何输出双引号
- 映射Category一对多双向自身关联关系
- ASP数据库开发总结(ADO.NET小结)