POJ 3616 Milking Time
解题思路:
dp[i]:选择第i个区间获得最大值
1.只在第i个区间取奶 dp[i]=node[i].val;
2.如果能在前面已经取奶的后面接着取奶 node[j].ed+R<=node[i].st 时dp[i]=dp[j]+node[i].val;
dp[i]=max(dp[i],dp[j]+node[i].val)(j<i)
实现代码:
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std;const int MAXN=10000; const int INF=1<<30;/* dp[i]:选择第i个区间获得最大值 1.只在第i个区间取奶 dp[i]=node[i].val; 2.如果能在前面已经取奶的后面接着取奶 node[j].ed+R<=node[i].st 时dp[i]=dp[j]+node[i].val; dp[i]=max(dp[i],dp[j]+node[i].val)(j<i)*/ struct Node{int st,ed;int val;bool operator <(const Node &rhs) const{if(ed!=rhs.ed)return ed<rhs.ed;elsereturn st<rhs.st;} }node[MAXN];int dp[MAXN];int main(){int N,M,R;while(scanf("%d%d%d",&N,&M,&R)!=EOF){for(int i=0;i<M;i++)scanf("%d%d%d",&node[i].st,&node[i].ed,&node[i].val);sort(node,node+M);memset(dp,0,sizeof(dp));int res=-INF;for(int i=0;i<M;i++){dp[i]=node[i].val;for(int j=0;j<i;j++){if(node[j].ed+R<=node[i].st)dp[i]=max(dp[i],dp[j]+node[i].val);}res=max(dp[i],res);}cout<<res<<endl;}return 0; }
转载于:https://www.cnblogs.com/IKnowYou0/p/6638625.html
POJ 3616 Milking Time相关推荐
- POJ 3616 Milking Time (字符串DP)
题意:找元素关于对角线左或右对称的最大矩阵 思路:左右对角线只需要遍历一条就可以了.只要当前点往上遍历和往后遍历一样就可以. 1 #include<iostream> 2 #include ...
- 动态规划训练22 [Milking Time POJ - 3616 ]
Milking Time POJ - 3616 说实话这道题目非常简单,本质上就是 多段有向图的求最大值问题.稍微变化的地方在于这个的的有向边没有那么明显 ,而是需要自己去寻找 如果任务i到任务j之间 ...
- J - Milking Time POJ - 3616(dp动态规划)
Bessie is such a hard-working cow. In fact, she is so focused on maximizing her productivity that sh ...
- 【POJ - 3616】Milking Time (贪心+dp)
题干: Bessie is such a hard-working cow. In fact, she is so focused on maximizing her productivity tha ...
- POJ 2185 Milking Grid (KMP,GCD)
http://poj.org/problem?id=2185 求最小覆盖子矩阵的面积,求出每行的最小覆盖子串,求最小公倍数,就是矩阵的长度 求出每列的最小覆盖子矩阵然后求最小公倍数,就是矩阵的宽 最小 ...
- POJ 3616 奶牛挤奶
Milking Time 贝茜是一个勤劳的牛.事实上,她如此专注于最大化她的生产力,于是她决定安排下一个N(1≤N≤1,000,000)小时(方便地标记为0..N-1),以便她生产尽可能多的牛奶. ...
- POJ 2455Secret Milking Machine(二分+网络流之最大流)
题目地址:POJ2455 手残真浪费时间啊..又拖到了今天才找出了错误..每晚两道题不知不觉又变回了每晚一道题...sad.. 第一次在isap中忘记调用bfs,第二次则是遍历的时候竟然是从1開始遍历 ...
- poj 3616(简单dp)
题意:你有一头奶牛,你能够在一定的时间里挤奶.而且挤奶量也不同,每次挤奶要休息r时间,问你最大可以挤多少奶. 解题思路:这道题就是单调递增子序列的模型,dp[i]表示前i个任务可以得到的最优值.两层循 ...
- DP:Miking Time(POJ 3616)
2015-09-21 奶牛挤奶 题目大意就是这只Bessie的牛产奶很勤奋,某农民有一个时刻表,在N时间内分成M个时间段,每个时间段Bessie会一直产奶,然后有一定的效益,并且Bessie产奶后要休 ...
最新文章
- Spring3.2.0-mybatis3.2.0 基于全注解搭建的后台框架-基础版
- python数据可视化库 动态的_python --数据可视化(一)
- k8s 命令 重启_快速入门Kubernetes(K8S)——资源清单
- 概率编程库Pymc3案例之线性回归
- 机器学习第4天:线性回归及梯度下降
- java axisclient超时_调用webservice接口超时
- Darkness Before the Dawn
- 人工智能云计算大数据物联网
- hdu 2896 病毒侵袭
- Linux 启动/重启/停止 MySQL 数据库的命令
- js mztreeview 双击事件_Mac下的Node.js安装教程
- 【洛谷P4315】月下“毛景树”(树链剖分)
- 用java写一个if语句
- 《从零开始学Swift》学习笔记(Day 39)——构造函数重载
- 自定义ZXing二维码扫描界面并解决取景框拉伸等问题
- 使用as3控制动画的播放与暂停
- FFPLAY的原理(三)
- 这首歌,竟然是AI生成的,太狠了...
- linux安装opencv让输入密码,Linux下安装OpenCV步骤
- perl语言入门:全局变量和私有变量