zoukankan      html  css  js  c++  java
  • BZOJ 2844: albus就是要第一个出场 线性基

    之前求的是排名为 $i$ 的异或值,现在反过来了.
    但是求法挺像的,还是二进制拆分,然后按照之前的方式统计一下就可以了.

    #include <cstdio> 
    #include <algorithm>   
    #define M 60 
    #define N 60 
    #define ll long long   
    #define setIO(s) freopen(s".in","r",stdin) 
    using namespace std;          
    ll qpow(ll base,ll k,ll mod) 
    {
        ll tmp=1; 
        for(;k;k>>=1,base=base*base%mod) if(k&1) tmp=tmp*base%mod;   
        return tmp;     
    }
    int n,m,p[N*10];
    ll d[N*10];      
    void insert(ll x) 
    {
        for(int i=M;i>=0;--i)    
        { 
            if(x&(1ll<<i)) 
            {
                if(d[i]) x^=d[i];    
                else 
                {
                    d[i]=x;
                    break; 
                }
            } 
        }
    }   
    int main() 
    {
        // setIO("input"); 
        ll q,rk=0; 
        int i,j; 
        scanf("%d",&n);  
        for(i=1;i<=n;++i)  
        { 
            ll a; 
            scanf("%lld",&a), insert(a); 
        }    
        scanf("%lld",&q); 
        for(i=0;i<=M;++i) if(d[i]) p[m++]=i;     
        for(i=0;i<m;++i) 
        {
            if(q&(1ll<<p[i])) 
            {
                rk+=(1ll<<i);       
            }
        }   
        printf("%lld
    ",(qpow(2,n-m,10086)*rk%10086+1)%10086);           
        return 0; 
    }
    

      

  • 相关阅读:
    G
    C
    B
    B
    线段树模板
    网络流模板
    POJ_1631_Bridging_Signals_(动态规划,LIS)
    POJ_1065_Wooden_Sticks_(动态规划,LIS+鸽笼原理)
    BZOJ_1015_星球大战_[JSOI2008]_(并查集)
    POJ_3280_Cheapest_Palindrome_(动态规划)
  • 原文地址:https://www.cnblogs.com/guangheli/p/11533317.html
Copyright © 2011-2022 走看看