http://acm.hdu.edu.cn/showproblem.php?pid=3949

求n个数的异或和第k小。

参考:https://blog.sengxian.com/algorithms/linear-basis

没了。

#include<cstdio>
#include<iostream>
#include<cstring>
#include<vector>
#include<algorithm>
using namespace std;
typedef long long ll;
const int BASE=;
ll b[];
int n,cnt;
vector<ll>mp;
ll query(ll k){
if(cnt!=n)k--;
if(k>(1LL<<(int)mp.size())-)return -;
ll ans=;
for(int i=;i<(int)mp.size();i++){
if(k>>i&)ans^=mp[i];
}
return ans;
}
inline void init(){
cnt=;
memset(b,,sizeof(b));
mp.clear();
}
int main(){
int t;
scanf("%d",&t);
for(int cas=;cas<=t;cas++){
printf("Case #%d:\n",cas);
scanf("%d",&n);
init();
for(int i=;i<=n;i++){
ll a;scanf("%lld",&a);
for(int j=BASE;j>=;j--){
if(a>>j&){
if(b[j])a^=b[j];
else{
b[j]=a;cnt++;
for(int k=j-;k>=;k--)
if(b[k]&&(b[j]>>k&))b[j]^=b[k];
for(int k=j+;k<=BASE;k++)
if(b[k]>>j&)b[k]^=b[j];
break;
}
}
}
}
for(int i=;i<=BASE;i++)
if(b[i])mp.push_back(b[i]);
int q;
scanf("%d",&q);
while(q--){
ll k;
scanf("%lld",&k);
printf("%lld\n",query(k));
}
}
return ;
}

+++++++++++++++++++++++++++++++++++++++++++

+本文作者:luyouqi233。               +

+欢迎访问我的博客:http://www.cnblogs.com/luyouqi233/+

+++++++++++++++++++++++++++++++++++++++++++

HDU3949:XOR——题解的更多相关文章

  1. HDU3949 XOR (线性基)

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

  2. hdu3949 XOR xor高斯消元

    XOR Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  3. 【线性基】hdu3949 XOR

    给你n个数,问你将它们取任意多个异或起来以后,所能得到的第K小值? 求出线性基来以后,化成简化线性基,然后把K二进制拆分,第i位是1就取上第i小的简化线性基即可.注意:倘若原本的n个数两两线性无关,也 ...

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

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

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

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

  6. HDU3949 XOR

    嘟嘟嘟 集训的时候发现自己不会线性基,就打算学一下. 这东西学了挺长时间,其实不是因为难,而是天天上午考试,下午讲题,结果晚上就开始颓了. 今天总算是有大块的时间好好学了一遍. 这里推荐menci大佬 ...

  7. BZOJ2115:[WC2011]Xor——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=2115 https://www.luogu.org/problemnew/show/P4151 这道 ...

  8. HDU3949:XOR(高斯消元)(线性基)

    传送门 题意 给出n个数,任意个数任意数异或构成一个集合,询问第k大个数 分析 这题需要用到线性基,下面是一些资料 1.高斯消元&线性基&Matirx_Tree定理 笔记 2.关于线性 ...

  9. 【HDU3949】XOR

    [题目大意] 给定一个数组,求这些数组通过异或能得到的数中的第k小是多少. 传送门:http://vjudge.net/problem/HDU-3949 [题解] 首先高斯消元求出线性基,然后将k按照 ...

随机推荐

  1. 几个常用的轻量级web服务

    Node.js 安装:npm install http-server 使用:hs命令,可启动以当前目前为webroot的8080端口web服务,也可指定端口 Python 安装:内置 使用:pytho ...

  2. Mate20兼容性如何?WeTest带你抢先测!

    自从九月份 iPhone XS 系列发布后,WeTest团队迅速入库了iPhone XS和iPhone XR设备,十月份国内巨头华为也重磅推出了一款“Mate 20”设备,让下半年的国内手机市场又热闹 ...

  3. 05-JVM对象探秘

    一.对象的内存布局         以Hotspot虚拟机为例,对象在内存中的结构可以分为三部分:对象头(header).实例数据(instance data).对齐填充(padding). 1.1. ...

  4. selenium自动化一点记录

    UI自动化 1.webdriver的findElement方法可以查找页面某元素,通常使用方式是通过id和name进行查找 1.By ID根据id进行定位 WebElement element=dri ...

  5. Android 简介

    一 Android起源 android: 机器人 android是google公司开发的基于Linux2.6的免费开源操作系统 2005 Google收购 Android Inc. 开始 Dalvik ...

  6. 用列主元消去法分别解方程组Ax=b,用MATLAB程序实现(最有效版)

    数值分析里面经常会涉及到用MATLAB程序实现用列主元消去法分别解方程组Ax=b 具体的方法和代码以如下方程(3x3矩阵)为例进行说明: 用列主元消去法分别解方程组Ax=b,用MATLAB程序实现: ...

  7. 【第一章】MySQL数据概述

    安装部署 备份恢复主备复制读写分离HA架构分布式数据库压力测试性能优化自动化运维 ==数据的存储方式1. 人工管理阶段2. 文件系统阶段3. 数据库系统管理阶段 ==数据库技术构成1. 数据库系统 D ...

  8. [git] Git in Practice

    Work flow with git and github Work with Remotes Check the current status git status Check the latest ...

  9. HDU 1007 Quoit Design(计算几何の最近点对)

    Problem Description Have you ever played quoit in a playground? Quoit is a game in which flat rings ...

  10. c# 两个软件传参

    1.socket 传参,类似于小型的服务器和客户端,一端发送,另一端保持监听状态. 2.通过第三方  数据库或者文件.