标签:
奶牛在0~N时间段产奶。农夫约翰有M个时间段可以挤奶,时间段f,t内能挤到的牛奶量e。奶牛产奶后需要休息R小时才能继续下一次产奶,求最大的挤奶量
先对M个时间段进行排序,dp[i]表示前i个时间段最多可以产多少牛奶
if (data[j].r<=data[i].l)
dp[i]=Max(dp[i],dp[j]+data[i].x);
#include "stdio.h" #include "string.h" #include "algorithm" using namespace std; struct node { int l,r,x; }data[1010]; int dp[1010]; int Max(int a,int b) { if (a<b) return b; else return a; } bool cmp(node a,node b) { return a.l<b.l; } int main() { int n,m,r,i,j,ans; while (scanf("%d%d%d",&n,&m,&r)!=EOF) { for (i=1;i<=m;i++) { scanf("%d%d%d",&data[i].l,&data[i].r,&data[i].x); data[i].r+=r; } sort(data+1,data+1+m,cmp); for (i=1;i<=m;i++) dp[i]=data[i].x; for (i=2;i<=m;i++) for (j=1;j<i;j++) { if (data[j].r<=data[i].l) dp[i]=Max(dp[i],dp[j]+data[i].x); } ans=0; for (i=1;i<=m;i++) ans=Max(ans,dp[i]); printf("%d\n",ans); } return 0; }
标签:
原文地址:http://blog.csdn.net/u011932355/article/details/45558183