挑战练习题2.3动态规划 poj3616Milking Time dp
来源:互联网 发布:数据库字符串截断 编辑:程序博客网 时间:2024/05/17 02:52
题目链接:
http://poj.org/problem?id=3616
题意:
奶牛Bessie在0~N时间段产奶。农夫约翰有M个时间段可以挤奶,时间段f,t内Bessie能挤到的牛奶量e。奶牛产奶后需要休息R小时才能继续下一次产奶,求Bessie最大的挤奶量。
题解:
定义dp[i]表示第i个时间段挤奶能够得到的最大值,拆开来说,就是前面 i – 1个时间段任取0到i – 1个时间段挤奶,然后加上这个时间段(i)的产奶量之和。dp[i]满足如下递推关系:
第i个时间段挤奶的最大值 = 前 i – 1 个时间段挤奶最大值中的最大值 + 第i次产奶量。
代码:
#include <iostream>#include <cstdio>#include <algorithm>using namespace std;typedef long long ll;#define MS(a) memset(a,0,sizeof(a))#define MP make_pair#define PB push_backconst int INF = 0x3f3f3f3f;const ll INFLL = 0x3f3f3f3f3f3f3f3fLL;inline ll read(){ ll x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f;}//////////////////////////////////////////////////////////////////////////const int maxn = 1e3+10;struct node{ int l,r,e; bool operator<(const node& rhs)const{ return l < rhs.l; }}cow[maxn];int dp[maxn];int main(){ int N,M,R; cin >> N >> M >> R; for(int i=0; i<M; i++){ cin >> cow[i].l >> cow[i].r >> cow[i].e; cow[i].r += R; } sort(cow,cow+M); // dp[i] : 表示第i个时间段挤奶能够得到的最大值,拆开来说,就是前面 i – 1个时间段任取0到i – 1个时间段挤奶,然后加上这个时间段(i)的产奶量之和 for(int i=0; i<M; i++){ dp[i] = cow[i].e; for(int j=0; j<i; j++){ if(cow[j].r <= cow[i].l) dp[i] = max(dp[i],dp[j]+cow[i].e); } } cout << *max_element(dp,dp+M) << endl; return 0;}
0 0
- 挑战练习题2.3动态规划 poj3616Milking Time dp
- POJ3616Milking Time题解动态规划DP
- 挑战练习题2.3动态规划 poj2385Apple Catching dp
- 挑战练习题2.3动态规划 poj3280Cheapest Palindrome 区间dp
- 挑战练习题2.3动态规划 poj3046 Ant Counting dp
- POJ3616Milking Time(DP)
- 挑战练习题2.3动态规划 poj1742 Coins 多重背包
- 挑战练习题2.3动态规划 poj3181 Dollar Dayz 完全背包
- POJ3616Milking Time
- 挑战练习题 基础的动态规划算法
- 挑战练习题2.3动态规划 poj1065 Wooden Sticks 最长递减子序列
- 挑战练习题2.3动态规划 poj1631 Bridging signals 最长递增子序列
- [2016/7/28][dp]动态规划入门练习题
- 动态规划之练习题
- 动态规划练习题
- 动态规划练习题
- 动态规划练习题
- 动态规划练习题
- 浅析 ButterKnife
- CentOS配置SVN
- 欢迎使用CSDN-markdown编辑器
- Oracle分析函数
- 2016年第七届蓝桥杯C/C++程序设计本科B组省赛-凑算式
- 挑战练习题2.3动态规划 poj3616Milking Time dp
- 各种常用命令记录,做个记录,方便自己查阅
- 获取Android唯一标识(唯一序列号)
- [译]Java定时任务调度-Quartz文档(一)初步使用
- SQL限定查询笔记记录
- ios开发中的几种设计模式
- socket结构和几个IP地址转换函数
- B
- python下如何import cx_Oracle