POJ3616Milking Time
来源:互联网 发布:网络女主播电影演员表 编辑:程序博客网 时间:2024/06/05 03:15
题目链接点击打开链接:poj3616
题目大意:
在一个农场里,在长度为N个时间可以挤奶,但只能挤M次,且每挤一次就要休息t分钟;
接下来给m组数据表示挤奶的时间与奶量求最大挤奶量
本题其实很简单的,一个简单的动态规划,用一个dp表示在第i个时间段挤奶量的最大值,从i+1更新到M
不要忘记排序
#include <cstdio>#include <cstring>#include <vector>#include <iostream>#include <algorithm>#include <limits.h>#include <cmath>#include <queue>using namespace std;int dp[10050];struct sa{ int x,y,sum;}p[10050];int cmp(const sa a,const sa b){ if(a.x==b.x) return a.y<b.y; return a.x<b.x;}int main(){ int n,m,t; scanf("%d%d%d",&n,&m,&t); for(int i=0;i<m;i++){ scanf("%d%d%d",&p[i].x,&p[i].y,&p[i].sum); p[i].y+=t; } sort(p,p+m,cmp);//这一步很关键,时间是有顺序的// for(int i=0;i<m;i++)// cout<<p[i].x<<" "<<p[i].y<<endl; for(int i=m-1;i>=0;i--){ dp[i]=p[i].sum; for(int j=i+1;j<m;j++) if(p[j].x>=p[i].y){ dp[i]=max(dp[i],dp[j]+p[i].sum);//这里就是转移方程// cout<<j<<" "<<dp[j]<<endl; } } int maxx=0; for(int i=0;i<m;i++) maxx=max(maxx,dp[i]); cout<<maxx<<endl; return 0;}
0 0
- POJ3616Milking Time
- POJ3616Milking Time(DP)
- POJ3616Milking Time题解动态规划DP
- 挑战练习题2.3动态规划 poj3616Milking Time dp
- time
- time
- TIME
- Time
- TIME
- Time
- time
- Time
- time
- time
- time
- time
- Time
- TIME
- 数据挖掘中分类与预测的区别
- MFC ListControl技巧汇总
- java常用工具类FileUtil
- 基于RHEL 6.5安装Oracle 11g详细教程(4)安装Oracle前的准备
- JavaScript/Jquery:Validform 一句话验证表单内容
- POJ3616Milking Time
- 适配器简单模板
- 第十周 项目2-二叉树遍历的递归算法
- Redis作者谈Redis应用场景
- Android 百度地图地位指针
- iOS开发:获取系统邮箱地址
- Android UI优化——include、merge 、ViewStub
- 第十四周 项目一(3) 验证算法
- C++ 私有成员