LOJ114_k 大异或和_线性基


先一个一个插入到线性基中,然后高斯消元。

求第K小就是对K的每一位是1的都用对应的线性基的一行异或起来即可。

但是线性基不包含0的情况,因此不能确定能否组成0,需要特判。

在插入一个数时如果这个数最后变成0了就说明可以组成0.

代码:

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long ll;
ll b[55];
int flg;
void insert(ll x) {
int i;
for(i=50;i>=0;i--) {
if(x&(1ll<<i)) {
if(b[i]) x^=b[i];
else {b[i]=x; return ;}
}
}
if(!x) flg=1;
}
void Guass() {
int i,j;
for(i=50;i>=0;i--) {
if(b[i]) {
for(j=50;j>=0;j--) {
if(i!=j&&(b[j]&(1ll<<i))) {
b[j]^=b[i];
}
}
}
}
}
int main() {
int n,m;
scanf("%d",&n);
int i;
ll x;
for(i=1;i<=n;i++) scanf("%lld",&x),insert(x);
Guass();
int cnt=0;
for(i=0;i<=50;i++) {
if(b[i]) b[cnt++]=b[i];
}
scanf("%d",&m);
while(m--) {
scanf("%lld",&x);
if(x>(1ll<<cnt)) {
puts("-1"); continue;
}
x-=flg;
ll ans=0;
for(i=cnt;i>=0;i--) {
if(x&(1ll<<i)) ans^=b[i];
}
printf("%lld\n",ans);
}
}

LOJ114_k 大异或和_线性基的更多相关文章

  1. BZOJ_2460_[BeiJing2011]元素_线性基

    BZOJ_2460_[BeiJing2011]元素_线性基 Description 相传,在远古时期,位于西方大陆的 Magic Land 上,人们已经掌握了用魔 法矿石炼制法杖的技术.那时人们就认识 ...

  2. BZOJ_2844_albus就是要第一个出场_线性基

    BZOJ_2844_albus就是要第一个出场_线性基 Description 已知一个长度为n的正整数序列A(下标从1开始), 令 S = { x | 1 <= x <= n }, S ...

  3. BZOJ_3105_[cqoi2013]新Nim游戏_线性基+博弈论

    BZOJ_3105_[cqoi2013]新Nim游戏_线性基+博弈论 Description 传统的Nim游戏是这样的:有一些火柴堆,每堆都有若干根火柴(不同堆的火柴数量可以不同).两个游戏者轮流操作 ...

  4. BZOJ_4004_[JLOI2015]装备购买_线性基

    BZOJ_4004_[JLOI2015]装备购买_线性基 Description 脸哥最近在玩一款神奇的游戏,这个游戏里有 n 件装备,每件装备有 m 个属性,用向量zi(aj ,.....,am) ...

  5. LOJ114 k大(xiao)异或和(线性基)

    构造线性基后将其消至对任意位至多只有一个元素该位为1.于是就可以贪心了,将k拆成二进制就好.注意check一下是否能异或出0. #include<iostream> #include< ...

  6. [Cometoj#3 D]可爱的菜菜子_线段树_差分_线性基

    可爱的菜菜子 题目链接:https://cometoj.com/contest/38/problem/D?problem_id=1543 数据范围:略. 题解: 首先,如果第一个操作是单点修改,我们就 ...

  7. AcWing 228. 异或 (dfs+线性基)打卡

    题目:https://www.acwing.com/problem/content/230/ 题意:有一个图,每条边有一个权值,现在求1-n的一条路径的最大异或和,一条边能经过多次,相应的也要计算那么 ...

  8. 线性空间和异或空间(线性基)bzoj4004贪心+高斯消元优秀模板

    线性空间:是由一组基底构成的所有可以组成的向量空间 对于一个n*m的矩阵,高斯消元后的i个主元可以构成i维的线性空间,i就是矩阵的秩 并且这i个主元线性无关 /* 每个向量有权值,求最小权极大线性无关 ...

  9. Loj 114 k大异或和

    Loj 114 k大异或和 构造线性基时有所变化.试图构造一个线性基,使得从高到低位走,异或上一个非 \(0\) 的数,总能变大. 构造时让任意两个 \(bas\) 上有值的 \(i,j\) ,满足 ...

随机推荐

  1. zoj 2829 Beautiful Number

    Beautiful Number Time Limit: 2 Seconds      Memory Limit: 65536 KB Mike is very lucky, as he has two ...

  2. Android CircleImageView圆形ImageView

     Android CircleImageView圆形ImageView CircleImageView是github上一个第三方开源的实现圆形ImageView的项目.其在github上的项目主页 ...

  3. MySQL数据库不识别server=.而是识别localhost

    MySQL数据库不识别server=.而是识别localhost

  4. CodeForces 632A

    A - Grandma Laura and Apples Time Limit:1000MS     Memory Limit:262144KB     64bit IO Format:%I64d & ...

  5. mybatis使用步骤

    1.创建config.xml文件.设置环境.数据源等: 2.设置mapper.xml文件.写sql:下面图中的resultType属性经常会替换为resultMap,不过需要加入<resultM ...

  6. 贪婪大陆(cogs 1008)

    [题目描述] 面对蚂蚁们的疯狂进攻,小FF的Tower defense宣告失败……人类被蚂蚁们逼到了Greed Island上的一个海湾.现在,小FF的后方是一望无际的大海,前方是变异了的超级蚂蚁. ...

  7. linux下reboot和shutdown关机命令详解

    我 们在操作Linux v/服务器的时候肯定会有需要重启系统,或者关闭系统等操作.有些用户是直接到VPS主机商家面板上操作的,这样一来比较麻烦,二来有些面板还不易于使用 容易导致面板卡死.所以最好的方 ...

  8. php责任链模式

    php 责任链模式 又叫职责链模式.包含了一些命令对象和一些处理对象,每个处理对象决定它能处理那些命令对象,它也知道应该把自己不能处理的命令对象交下一个处理对象,该模式还描述了往该链添加新的处理对象的 ...

  9. Thinkphp 3.2使用Redis

    (1)直接调用框架自带的Redis类: 路径:\ThinkPHP\Library\Think\Cache\Driver\Redis.class.php. public function test(){ ...

  10. Swift 了解

    本篇仅于个人小记,记录个人不熟悉的知识点儿.如若要了解更全,请前往如下网址:http://www.runoob.com/swift/swift-arrays.html 1.Swift 标记 分号:Sw ...