Milking Time

POJ - 3616

Bessie is such a hard-working cow. In fact, she is so focused on maximizing her productivity that she decides to schedule her next N (1 ≤ N ≤ 1,000,000) hours (conveniently labeled 0..N-1) so that she produces as much milk as possible.

Farmer John has a list of M (1 ≤ M ≤ 1,000) possibly overlapping intervals in which he is available for milking. Each interval i has a starting hour (0 ≤ starting_houri ≤ N), an ending hour (starting_houri < ending_houri ≤ N), and a corresponding efficiency (1 ≤ efficiencyi ≤ 1,000,000) which indicates how many gallons of milk that he can get out of Bessie in that interval. Farmer John starts and stops milking at the beginning of the starting hour and ending hour, respectively. When being milked, Bessie must be milked through an entire interval.

Even Bessie has her limitations, though. After being milked during any interval, she must rest R (1 ≤ R ≤ N) hours before she can start milking again. Given Farmer Johns list of intervals, determine the maximum amount of milk that Bessie can produce in the N hours.

Input

* Line 1: Three space-separated integers: NM, and R
* Lines 2..M+1: Line i+1 describes FJ's ith milking interval withthree space-separated integers: starting_houri , ending_houri , and efficiencyi

Output

* Line 1: The maximum number of gallons of milk that Bessie can product in the Nhours

Sample Input

12 4 2
1 2 8
10 12 19
3 6 24
7 10 31

Sample Output

43

题目大意:第一行输入三个整数n,m,r,n代表最大时间,下面m行分别输入三个整数s,e,eff,表示从s时刻开始到e时刻结束共能收获eff的价值,注意每两段工作时间之间必须间隔r小时。

解决方法:先将其按照开始时间从小到大排序,然后求出dp[i]=max(dp[i],dp[j]+arr[i].eff)。

AC代码:

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstdlib>
#include <cstring>
#include <map>
#include <stack>
#include <queue>
#include <vector>
#include <set>
#include <utility>
using namespace std;
typedef long long ll;
#define inf 0x3f3f3f3f
#define rep(i,l,r) for(int i=l;i<=r;i++)
#define lep(i,l,r) for(int i=l;i>=r;i--)
#define ms(arr) memset(arr,0,sizeof(arr))
//priority_queue<int,vector<int> ,greater<int> >q;
const int maxn = (int)1e5 + 5;
const ll mod = 1e9+7;
struct node
{int s;int e;int eff;
}arr[1200];
bool cmp(node a,node b)
{if(a.s==b.s)return a.e<b.e;elsereturn a.s<b.s;
}
int dp[1200];
int main()
{//freopen("in.txt", "r", stdin);//freopen("out.txt", "w", stdout);ios::sync_with_stdio(0),cin.tie(0);int n,m,r;cin>>n>>m>>r;rep(i,1,m) {cin>>arr[i].s>>arr[i].e>>arr[i].eff;}sort(arr+1,arr+1+m,cmp);int ans=-1;for(int i=1;i<=m;i++){dp[i]=arr[i].eff;for(int j=1;j<i;j++){if(arr[j].e+r<=arr[i].s){dp[i]=max(dp[i],dp[j]+arr[i].eff);}}ans=max(ans,dp[i]);}cout<<ans<<endl;return 0;
}

Milking Time【动态规划-dp】相关推荐

  1. 第4课 防卫导弹(第十章 动态规划--DP)

    //progream p10_04 /* 第4课 防卫导弹(第十章 动态规划--DP)  (<聪明人的游戏--信息学探秘 提高篇>) https://blog.csdn.net/weixi ...

  2. 动态规划dp(带模板题の超易懂版):01背包,完全背包,分组背包,多重背包,混合背包

    动态规划dp(带模板题の超易懂版):01背包,完全背包,分组背包,多重背包 01背包 && 完全背包 && 分组背包 の 视频教程:https://www.bilibi ...

  3. 【习题详解】动态规划DP:硬币游戏 蛋糕 游荡的奶牛 决斗

    动态规划DP 硬币 蛋糕塔 游荡的奶牛 格斗 硬币 题目描述 农夫约翰的奶牛喜欢玩硬币游戏,因此他发明了一种称为"Xoinc"的两人硬币游戏. 初始时,一个有N(5 <= N ...

  4. 动态规划: dp+递推——确定动态矩阵dp含义,确定每个状态下面临的选择和对结果值影响,选择符合题意的作为结果存储在dp中

    1.动态规划:每一个状态一定是由之前的状态推导出来的,通过总结归纳发现递推关系 2.解决动态规划问题的步骤: 确定dp数组(dp table)以及下标的含义: 每个单元内 题目所求的值,一维.二维 确 ...

  5. Datawhale编程——动态规划DP

    0-1背包问题 问题:有n个物品,第i个物品价值为vi,重量为wi,其中vi和wi均为非负数,背包的容量为W,W为非负数.现需要考虑如何选择装入背包的物品,使装入背包的物品总价值最大. 针对这个经典的 ...

  6. 《强化学习》中的 时序差分学习 Temporal-Difference Learning (基于与动态规划 DP 、蒙特卡洛方法 MC 的对比)

    前言: 学习了 Sutton 的<强化学习(第二版)>中时序差分学习的"预测"部分内容.前两章中,书介绍了 动态规划 与 蒙特卡洛方法 ,我们从二者与 时序差分学习 的 ...

  7. HDU2571 命运【动态规划DP】

    命运 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission ...

  8. 算法技能树2-蓝桥杯-python实现测试次数(摔手机)-动态规划(DP)

    文章目录 1.题目描述 2.python解题 1.知识点总结 1.题目描述 x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机. 各大厂商也就纷纷推出各种耐摔型手机.x星球的质监局规 ...

  9. 动态规划(dp)总结

    问题 T: [动态规划]质数和分解 题目描述 任何大于1的自然数n,都可以写成若干个大于等于2且小于等于n的质数之和的形式(包括只有一个数构成的和表达式的情况),并且可能有不止一种质数和的形式.例如9 ...

最新文章

  1. PHP时间戳 strtotime()使用方法和技巧
  2. 使用OkHttp高效开发调试
  3. HTML5区域范围文本框实例页面
  4. Windows下Caffe的学习与应用(三)——使用OpenCV3调用自己训练好的Caffe模型进行图像分类
  5. QT使用之 手指滑动 | 物理惯性继续滑动动画的实现,根据不同速度实现不同动画效果
  6. Pycharm Anaconda 安装dlib
  7. mysql.data.dll win10_【MySQL】Windows10下安装
  8. SRS 启动正常,拉流没画面,看SRS日志报错 srs is already running
  9. 【CVE-2020-1957】shiro搭配spring时身份验证绕过漏洞分析
  10. CVPR 2021 Oral | GLEAN: 基于隐式生成库的高倍率图像超分辨率
  11. c语言交通灯程序闪烁,用C语言编写的交通灯程序
  12. [C++]各编译器对C++11的支持比较
  13. Eclipse调试Java的10个技巧
  14. 并发编程学习之线程8锁
  15. Python编程实践之Choose
  16. 为什么计算机上面没有桌面,请问为什么右击电脑桌面上的图标没有打开的选项,只有添加到压缩文件,双击才能进去?...
  17. 10款优秀的在线格式转化器
  18. 「AutoML」AutoML专栏上线,跟Google一起见证调参党的末日?
  19. Unity鼠标光标使用学习
  20. 造型时尚的快充移动电源,兼容性确实不错,aigo A10S体验

热门文章

  1. html邮件和纯文本邮件区别,邮件营销必读系列五--纯文本和HTML邮件类型——哪一种邮件类型更适合你?...
  2. linux下查看cmake的版本
  3. AVFoundation – AVAsset 加载媒体
  4. BugkuCTF-Reverse题NoString
  5. pdm 导入mysql 注释_PowerDesigner逆向导入MYSQL数据库并显示中文注释(转载)
  6. 在html中写js提示错误,页面HTML标签优化
  7. 电脑系统linux普通用户,Linux操作系统用户管理
  8. php mysql query 行数_如何在PHP中获取MYSQL数据库返回的数据的行数?
  9. 计算机机器人方向,计算机考研想学习智能机器人方向都有那几个学校呢..._考研_帮考网...
  10. 宏观经济学gdp计算方法_宏观经济学考研的重要考点