一、题目

  XOR

二、分析

  给定$N$个数,问它的任意子集异或产生的数进行排列,求第K小的数。

  构造出线性基$B$后,如果$|B| < N$,那么代表N个数中有一个数是可以由线性基中的其他数异或出来的,那么相当于可以异或出$0$。也就是说这种情况下会多一个0作为最小数。

  然后对于第$K$大,可以直接对$K$的二进制进行判断,如果为$1$就取线性基对应的数,然后进行异或就可以得出答案了。

三、AC代码

 1 #include <bits/stdc++.h>
2
3 using namespace std;
4 #define ll long long
5 #define Min(a,b) ((a)>(b)?(b):(a))
6 #define Max(a,b) ((a)>(b)?(a):(b))
7 const int maxn = 1e4 + 13;
8 const int maxl = 62;
9 ll a[maxn];
10
11 struct LinerBasis
12 {
13 vector<ll> vec;
14 int n;
15
16 void build(ll *x, int n)
17 {
18 this->n = n;
19 vector<ll> a(maxl+1);
20 for(int i = 1; i <= n; i++)
21 {
22 ll t = x[i];
23 for(int j = maxl; j >= 0; j--)
24 {
25 if( (t & (1ll<<j)) == 0 )
26 continue;
27 if(a[j])
28 t^=a[j];
29 else
30 {
31 //将低位的已存在的a[k],异或消掉t的这一位1
32 //a[k]=0也没有影响
33 for(int k = 0; k < j; k++)
34 {
35 if(t & (1ll<<k))
36 t ^= a[k];
37 }
38 //消除高位上a[k]的第j位1
39 for(int k = j + 1; k <= maxl; k++)
40 {
41 if(a[k] & (1ll << j))
42 a[k] ^= t;
43 }
44 a[j] = t;
45 break;
46 }
47 }
48 }
49 vec.clear();
50 for(int i = 0; i <= maxl; i++)
51 {
52 if(a[i])
53 vec.push_back(a[i]);
54 }
55 }
56
57 ll query(ll K)
58 {
59 //可能异或出0
60 if(vec.size() < n)
61 K--;
62 if(K > (1ll<<vec.size()) - 1)
63 return -1;
64 ll ans = 0;
65 for(int i = 0; i < vec.size(); i++)
66 {
67 if(K & (1ll << i))
68 {
69 ans ^= vec[i];
70 }
71 }
72 return ans;
73 }
74
75 }lb;
76
77 int main()
78 {
79 int T, Case = 0;
80 scanf("%d", &T);
81 while(T--)
82 {
83 int N, Q;
84 scanf("%d", &N);
85 for(int i = 1; i <= N; i++) scanf("%lld", &a[i]);
86
87 lb.build(a, N);
88
89 scanf("%d", &Q);
90 ll K;
91 printf("Case #%d:\n", ++Case);
92 while(Q--)
93 {
94 scanf("%lld", &K);
95 printf("%lld\n", lb.query(K));
96 }
97 }
98 return 0;
99 }

HDU_3949 XOR 【线性基】的更多相关文章

  1. Xor && 线性基练习

    #include <cstdio> #include <cstring> ; ; int cnt,Ans,b,x,n; inline int Max(int x,int y) ...

  2. 【BZOJ-2115】Xor 线性基 + DFS

    2115: [Wc2011] Xor Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 2142  Solved: 893[Submit][Status] ...

  3. BZOJ.2115.[WC2011]Xor(线性基)

    题目链接 \(Description\) 给定一张无向带边权图(存在自环和重边).求一条1->n的路径,使得路径经过边的权值的Xor和最大.可重复经过点/边,且边权和计算多次. \(Soluti ...

  4. BZOJ2115:[WC2011] Xor(线性基)

    Description Input 第一行包含两个整数N和 M, 表示该无向图中点的数目与边的数目. 接下来M 行描述 M 条边,每行三个整数Si,Ti ,Di,表示 Si 与Ti之间存在 一条权值为 ...

  5. HDU3949 XOR (线性基)

    HDU3949 XOR Problem Description XOR is a kind of bit operator, we define that as follow: for two bin ...

  6. [hdu3949]XOR(线性基求xor第k小)

    题目大意:求xor所有值的第k小,线性基模板题. #include<cstdio> #include<cstring> #include<algorithm> #i ...

  7. HDU3949 XOR(线性基第k小)

    Problem Description XOR is a kind of bit operator, we define that as follow: for two binary base num ...

  8. 2019牛客多校第一场H XOR 线性基模板

    H XOR 题意 给出一组数,求所有满足异或和为0的子集的长度和 分析 n为1e5,所以枚举子集肯定是不可行的,这种时候我们通常要转化成求每一个数的贡献,对于一组数异或和为0.我们考虑使用线性基,对这 ...

  9. BZOJ 2115 [Wc2011] Xor ——线性基

    [题目分析] 显然,一个路径走过两边是不需要计算的,所以我么找到一条1-n的路径,然后向该异或值不断异或简单环即可. 但是找出所有简单环是相当复杂的,我们只需要dfs一遍,找出所有的环路即可,因为所有 ...

  10. BZOJ 2844: albus就是要第一个出场 [高斯消元XOR 线性基]

    2844: albus就是要第一个出场 题意:给定一个n个数的集合S和一个数x,求x在S的$2^n$个子集从小到大的异或和序列中最早出现的位置 一开始看错题了...人家要求的是x第一次出现位置不是第x ...

随机推荐

  1. codeforces 1029E Tree with Small Distances【思维+贪心】 【非原创】

    题目:戳这里 学习博客:戳这里 题意:给一个树加最少的边,使得1到所有点的距离小于等于2. 解题思路:分析样例3可以看出,如果一个点到1的距离大于2,那么建立1到该点的父亲节点的边将比直接与该点建边更 ...

  2. FZU2105 Digits Count(按位建线段树)题解

    题意: 给出区间与.或.异或\(x\)操作,还有询问区间和. 思路: 因为数比较小,我们给每一位建线段树,这样每次只要更新对应位的答案. 与\(0\)和或\(1\)相当于重置区间,异或\(1\)相当于 ...

  3. QUIC协议和HTTP3.0技术研究

    QUIC:基于UDP的安全可靠的HTTP/2传输协议 摘要 QUIC(Quick UDP Internet Connection)是一个新的基于UDP的管线化技术和安全传输协议. QUIC提供: 和H ...

  4. zsh & git alias

    zsh & git alias $ code .zshrc $ code .bash_profile $ code ~/.oh-my-zsh # update changes $ source ...

  5. 如何使用 Python 编写后端 API 接口

    如何使用 Python 编写后端 API 接口 get API Python3 # coding:utf-8 import json # ModuleNotFoundError: No module ...

  6. git merge bug

    git merge bug 本地分支 dev commit 后, 直接 pull 远程 dev 分支, 导致远程 dev 分支 merge 到本地 dev 分支了, 取消本次 merge 操作? Re ...

  7. i18n 和 L10n (internationalization and localization) 国际化与本地化(具有全球战略眼光的公司企业的必由之路)

    i18n 和 L10n (internationalization and localization)  国际化与本地化(具有全球战略眼光的公司企业的必由之路) 1 1 https://zh.wiki ...

  8. CSS ::marker All In One

    CSS ::marker All In One CSS pseudo element / CSS 伪元素 /* user agent stylesheet */ ::marker { unicode- ...

  9. Azure 计费 & 成本管理 & 取消 Azure 订阅

    Azure 计费 & 成本管理 & 取消 Azure 订阅 https://docs.microsoft.com/zh-cn/azure/cost-management-billing ...

  10. macOS utils

    macOS utils dr.unarchiver https://dr-unarchiver.en.softonic.com/mac https://dr-unarchiver.en.softoni ...