zoukankan      html  css  js  c++  java
  • bzoj1642 / P2889 [USACO07NOV]挤奶的时间Milking Time

    P2889 [USACO07NOV]挤奶的时间Milking Time

    普通的dp

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

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

    注意起点是0

     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
  • 相关阅读:
    信息检索笔记
    北大课程(变态心理学)
    My life
    Excel小技巧(随机点名)
    Flask基础
    CTF
    GDB
    LD_PRELOAD
    AFL-数据变异
    AFL入门
  • 原文地址:https://www.cnblogs.com/kafuuchino/p/10029479.html
Copyright © 2011-2022 走看看