1 条题解

  • 0
    @ 2025-10-8 16:51:10

    G62 线性基 第k小异或和 HDU 3949 XOR

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long LL;
    LL p[51],flg=0;
    void ins(LL x)
    {
        for(int i=50;i>=0;i--)if((x>>i)&1)
        {
            if(!p[i]){p[i]=x;return;}
            else x^=p[i];
        }
        flg|=(x==0);
    }
    LL kth(LL x)
    {
        x-=flg;
        LL ans=0;
        for(int i=0;i<=50;i++)if(p[i])
        {
            if(x&1)ans^=p[i];
            x>>=1;
        }
        if(x)return -1;
        return ans;
    }
    int main()
    {
        int n;scanf("%d",&n);
        memset(p,0,sizeof(p));
        for(int i=1;i<=n;i++)
        {
            LL x;scanf("%lld",&x);
            ins(x);
        }
        
        for(int i=0;i<=50;i++)
            for(int j=0;j<i;j++)
                if(p[i]&((LL)1<<j))p[i]^=p[j];
                
        int m;scanf("%d",&m);
        while(m--)
        {
            LL x;scanf("%lld",&x);
            printf("%lld\n",kth(x));
        }
        return 0;
    }
    
    • 1

    信息

    ID
    522
    时间
    1000ms
    内存
    256MiB
    难度
    4
    标签
    (无)
    递交数
    60
    已通过
    27
    上传者