洛谷P2889Milking Time
Posted Absolutezero
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了洛谷P2889Milking Time相关的知识,希望对你有一定的参考价值。
很容易想到以结束时间加上R从小到大排序
之后怎样呢?
我们按层考虑,f[i]表示前i个时间段嫩得到的最大价值
每次枚举其之前的状态,如果其ed<当前i的st,那么取max即可
1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 const int N=1010; 6 int n,m,r,f[N]; 7 struct fx{ 8 int st,ed,v; 9 }c[N]; 10 bool cmp(fx a,fx b){ 11 return a.ed<b.ed; 12 } 13 int read(){ 14 int sum=0; 15 char ch=getchar(); 16 while (ch<\'0\'||ch>\'9\') 17 ch=getchar(); 18 while (ch>=\'0\'&&ch<=\'9\'){ 19 sum=sum*10+ch-\'0\'; 20 ch=getchar(); 21 } 22 return sum; 23 } 24 int main(){ 25 int st,ed,v,ans=0; 26 n=read(); 27 m=read(); 28 r=read(); 29 for (int i=1;i<=m;i++){ 30 c[i].st=read(); 31 c[i].ed=read()+r; 32 c[i].v=read(); 33 } 34 sort(c+1,c+m+1,cmp); 35 for (int i=1;i<=m;i++){ 36 f[i]=c[i].v; 37 for (int j=1;j<i;j++){ 38 if (c[i].st>=c[j].ed) 39 f[i]=max(f[i],f[j]+c[i].v); 40 ans=max(ans,f[i]); 41 } 42 } 43 printf("%d",ans); 44 return 0; 45 }
以上是关于洛谷P2889Milking Time的主要内容,如果未能解决你的问题,请参考以下文章
洛谷—— P1204 [USACO1.2]挤牛奶Milking Cows
洛谷P1204 [USACO1.2]挤牛奶Milking Cows