zoukankan      html  css  js  c++  java
  • bitset

    BZOJ3687

    #include <cstdio>
    #include <bitset>
    using namespace std;
    
      bitset <2000001> f;
      int n;
    
      int main(){      
          scanf("%d",&n);
          f[0]=1;
          for (int i=1;i<=n;i++){
            int t;
            scanf("%d",&t);
          f=f^(f<<t);    
        }
        int ans=0;
        for (int i=1;i<=2000000;i++)
          if (f[i])
            ans^=i;
        printf("%d
    ",ans);
      }

     ____________________________________________
    BZOJ3346

    #include <cstdio>
    #include <bitset>
    #include <map>
    #include <algorithm>
    using namespace std;
     
      bitset <10005> f[10005];
      map <int,int> mp;
      int n,m,deg[10005];
     
      struct data{
        int x,y,len;
      }sid[100005];
     
      int mycomp(const data&a,const data&b){
        return(a.len<b.len);
      }
       
      int check(int mid){
        for (int i=1;i<=n;i++) f[i].reset();
        int po=1;
        while (po<=m&&sid[po].len<=sid[mid].len){
          f[sid[po].x][sid[po].y]=1;
          po++; 
        }
        for (int i=1;i<=n;i++) deg[i]=f[i].count();
         
        for (int i=1;i<=n;i++)
          if (2*deg[i]>=n)
            for (int j=1;j<=n;j++)
             if (deg[i]+deg[j]>=n)
              if ((f[i]|f[j]).count()==n)
                return(1);
         
        return(0);          
      }
     
      int main(){   
        scanf("%d%d",&n,&m);
        int cnt=0;
        for (int i=1;i<=m;i++){
          int t1,t2,t3;
          scanf("%d%d%d",&t1,&t2,&t3);
          if (mp[t1*(n+1)+t2]){
            sid[mp[t1*(n+1)+t2]].len=min(sid[mp[t1*(n+1)+t2]].len,t3);  
          }else{
            sid[mp[t1*(n+1)+t2]=++cnt].len=t3;
            sid[cnt].x=t1;sid[cnt].y=t2;
          }
        }
        m=cnt;
        sort(sid+1,sid+m+1,mycomp);
         
        int l=1,r=m+1;
        while (l<r){
          int mid=(l+r)>>1;
          if (check(mid)) r=mid;else l=mid+1;
        }
         
        if (l==m+1) printf("No solution
    ");else printf("%d
    ",sid[l].len);
      }
  • 相关阅读:
    弄清变量名字空间
    Perl中文编码的处理
    了解魔符的含义
    Log::Minimal 小型可定制的log模块
    Perl – 文件测试操作符
    在源代码中使用Unicode字符
    editplus乱码charset的奇怪问题
    ASP.NET程序中常用代码汇总(一)
    ASP.NET程序中常用代码汇总(三)
    ASP.NET程序中常用代码汇总(二)
  • 原文地址:https://www.cnblogs.com/zhujiangning/p/6349488.html
Copyright © 2011-2022 走看看