洛谷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 }
View Code

 

以上是关于洛谷P2889Milking Time的主要内容,如果未能解决你的问题,请参考以下文章

poj 3161 Milking Time

洛谷—— P1204 [USACO1.2]挤牛奶Milking Cows

洛谷P1204 [USACO1.2]挤牛奶Milking Cows

Milking Time

[2016-03-28][POJ][3616][Milking Time]

Milking Time POJ - 3616