zoukankan      html  css  js  c++  java
  • bzoj 2460 线性基

    #include<bits/stdc++.h>
    #define ll long long
    #define LL long long
    #define int long long
    using namespace std;
    const int maxn=1e4+10;
    int a[maxn];
    int b[maxn];
    int p[100];
    int pp[100];
    int32_t main()
    {
        int n; cin>>n;
        for(int i=1;i<=n;i++) cin>>a[i]>>b[i];
        for(int i=1;i<=n;i++)
        {
            for(int j=64;j>=0;j--)
            {
                if( (a[i]>>j) & 1 )
                {
                    if(!p[j])  { p[j]=a[i];  pp[j]=b[i]; break;  }
                    else
                    {
                        if(b[i]>pp[j])
                        {
                            swap(b[i],pp[j]);
                            swap(a[i],p[j]);
                        }
                        a[i]^=p[j];
                    }
                }
            }
        }
        int ans=0;
        for(int i=0;i<=64;i++)
        {
            ans+=pp[i];
        }
        cout<<ans<<endl;
    
    }

     另一种求线性基的方法

      for (int i = 1; i <= n; i++) {
            scanf("%d", &t);
            for (int j = 0; j < base.size(); j++) if((t^base[j]) < t) t ^= base[j];
            if(t) base.pb(t);
        }
  • 相关阅读:
    判定一个APP是否可以上线?
    即时聊天-环信
    类目延展协议
    一个sql的优化
    多线程编程
    sql小总结
    人生七问
    js之按键总结
    搭建框架日志记录
    jquery函数
  • 原文地址:https://www.cnblogs.com/Andromeda-Galaxy/p/10530595.html
Copyright © 2011-2022 走看看