首页 > 其他 > 详细

bzoj1642 / P2889 [USACO07NOV]挤奶的时间Milking Time

时间:2018-11-27 22:43:50      阅读:184      评论:0      收藏:0      [点我收藏+]

P2889 [USACO07NOV]挤奶的时间Milking Time

普通的dp

休息时间R其实就是把结束时间后移R个单位而已。但是终点也需要后移R位到n+R

每个时间段按起始时间排序,蓝后跑一遍普通的线性dp即可

注意起点是0

(班主任十分显然地拒绝了我的晚自习机房计划,毕竟是退役OIer)

技术分享图片
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 using namespace std;
 6 int max(int &a,int &b){return a>b?a:b;}
 7 struct data{
 8     int l,r,val;
 9     void Init(){scanf("%d%d%d",&l,&r,&val);}
10     bool operator < (const data &tmp) const{
11         return l<tmp.l;
12     } 
13 }a[1002];
14 int n,m,R,f[2000005];
15 int main(){
16     scanf("%d%d%d",&n,&m,&R);
17     for(int i=1;i<=m;++i) a[i].Init();
18     sort(a+1,a+m+1); int k=1;
19     for(int i=0;i<=n+R;++i){
20         if(i) f[i]=max(f[i],f[i-1]);
21         for(;a[k].l==i&&k<=m;++k)
22             f[a[k].r+R]=max(f[a[k].r+R],f[i]+a[k].val);
23     }printf("%d",f[n+R]);
24     return 0;
25 }
View Code

 

bzoj1642 / P2889 [USACO07NOV]挤奶的时间Milking Time

原文:https://www.cnblogs.com/kafuuchino/p/10029479.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!