poj 3616 Milking Time(dp)

来源:互联网 发布:实时大数据平台spark 编辑:程序博客网 时间:2024/05/18 01:09

 题意;

给定总工作时间n,m个工作区间,休息时间r。在经过每个工作区间后,工人都要休息r时间,同时每个区间工作效率也不一样,求最大收益。

思路;

把给定的工作区间按照升序排列,之后dp,没什么坑点。

#include<iostream>#include<cstdio>#include<algorithm>using namespace std;struct milk{int st,en,sum;}qu[1100];bool cmp(milk a,milk b){return b.st>a.st;}int n,m,r,dp[1000010];int main(){while(scanf("%d%d%d",&n,&m,&r)!=EOF){for(int i=1;i<=m;i++)scanf("%d %d %d",&qu[i].st,&qu[i].en,&qu[i].sum);sort(qu+1,qu+1+m,cmp);dp[1]=qu[1].sum;for(int i=2;i<=m;i++){dp[i]=qu[i].sum;for(int j=i-1;j>=1;j--)if(qu[j].en+r<=qu[i].st)dp[i]=max(dp[i],qu[i].sum+dp[j]);}int mx=dp[1];for(int i=2;i<=m;i++)mx=max(dp[i],mx);printf("%d\n",mx);}return 0;}




原创粉丝点击