zoukankan      html  css  js  c++  java
  • LOJ #6035.「雅礼集训 2017 Day4」洗衣服 贪心

    这道题的贪心好迷啊~
    我们对于两个过程进行单独贪心,然后再翻转一个,把这两个拼起来.
    先说一下单独贪心,单独贪心的话就是用一个堆,每次取出最小的,并且把这个最小的加上他单次的,再放进去.这样,我们得到的结果,是对于某些洗衣机,不停地洗,然后把这些洗衣机的时间,混在一起,排个序,由于对于每个洗衣机,如果被用到,那么他就会被不停地用,如果我们稍作改动,就一定会是用小的换来大的,所以这样最优.
    我们把两个拼起来为什么是对的呢.对于两个单独的答案,最优的无疑是,翻转之后拼起来,因为如果不是这样,也就是说进行了换位,那么参与交换的原来顶着的甲方的A和己方的B,一定会被大于等于A的C和大于等于B的D所代替,那么这个时候答案一定不会变小.那么为什么我们两个单独的最优答案,在拼接的时候,还是能拼出来最优的呢,这是因为,就像我们在上一段说的,我们的到的最优答案,是无条件最优,也就是说,其他的答案,没有一处会比他好.
    冷静地去思考、证明贪心确实是一个不二之选.
    (随机堆的随机数是1和0轮换的话,好快啊……二叉堆比左偏树快好多啊……)

    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    typedef long long LL;
    #define read(a) (scanf("%d",&a))
    const int L=1000010,N=100010;
    struct Heap{
      LL key[N];
      int val[N],n;
      inline void Init(){read(n);}
      inline void build(){
        register int i;
        for(i=1;i<=n;++i)read(val[i]);
        std::sort(val+1,val+(n+1));
        for(i=1;i<=n;++i)key[i]=val[i];
      }
      inline LL top(){return key[1];}
      inline void update(){
        key[1]+=val[1];
        register int index=1,next;
        while(index<=(n>>1)){
          next=index<<1;
          if(next<n&&key[next]>key[next|1])++next;
          if(key[next]>=key[index])return;
          std::swap(key[index],key[next]);
          std::swap(val[index],val[next]);
          index=next;
        }
      }
    }Wash,Dry;
    LL a[L],b[L];
    int l;
    inline void Init(){
      read(l);
      Wash.Init(),Dry.Init();
      Wash.build(),Dry.build();
    }
    inline void work(){
      register int i;
      for(i=1;i<=l;++i){
        a[i]=Wash.top(),Wash.update();
        b[i]=Dry.top(),Dry.update();
      }
    }
    inline void print(){
      register LL ans=0;
      register int i;
      for(i=1;i<=l;++i)
        ans=std::max(ans,a[i]+b[l-i+1]);
      printf("%lld
    ",ans);
    }
    int main(){
      Init(),work(),print();
      return 0;
    }
  • 相关阅读:
    yii中设置提示成功信息,错误提示信息,警告信息
    关于京东评价数目,淘宝评价数目延迟加载
    关于yii的relations
    关于yii验证和yii错误处理
    jquery资源网站
    Facybox弹出层效果
    YII适合做后台的一个扩展
    Yii: 参数检查和错误的集中处理技巧
    Asp.net 备份、还原Ms SQLServer及压缩Access数据库
    天诺网
  • 原文地址:https://www.cnblogs.com/TSHugh/p/8625121.html
Copyright © 2011-2022 走看看