zoukankan      html  css  js  c++  java
  • 【AtCoder Grand Contest 20】—Median Sum(结论+Bitset)

    传送门

    做的时候傻的,只想到分治fftfft
    结果极限数据要跑6s6s
    还要爆long doublelong double

    考虑一个结论是对于每一个和为xx的集合,一定有一个和为sumxsum-x的集合与之对应
    由于不算00,所以我们只需要找到第一个大于sum/2sum/2的集合就是了
    bitsetbitset优化即可

    #include<bits/stdc++.h>
    using namespace std;
    const int RLEN=1<<20|1;
    inline char gc(){
     static char ibuf[RLEN],*ib,*ob;
     (ib==ob)&&(ob=(ib=ibuf)+fread(ibuf,1,RLEN,stdin));
     return (ib==ob)?EOF:*ib++;
    } 
    #define gc getchar
    inline int read(){
     char ch=gc();
     int res=0,f=1;
     while(!isdigit(ch))f^=ch=='-',ch=gc();
     while(isdigit(ch))res=(res+(res<<2)<<1)+(ch^48),ch=gc();
     return f?res:-res;
    }
    #define ll long long
    #define re register
    #define pb push_back
    #define cs const 
    const int N=2005,M=4000005;
    bitset<M> c;
    int n,mx;
    int main(){
     n=read();
     c[0]=1;
     for(int i=1;i<=n;i++){
      int a=read();
      mx+=a,c|=(c<<a);
     }
     for(int i=(mx+1)/2;i<=mx;i++)if(c[i]){cout<<i;return 0;}
    }
    
  • 相关阅读:
    Oracle Drop表并未直接删除 drop table xx purge
    Notepad++使用
    Python使用MySQL数据库
    考驾照科目二科目三要点记录
    Linux中权限(r、w、x)对于目录与文件的意义
    linux之expr命令
    linux下scp
    数字货币和区块链联系
    网站
    关于linux 编程
  • 原文地址:https://www.cnblogs.com/stargazer-cyk/p/12328761.html
Copyright © 2011-2022 走看看