hdu3949(线性基,求第k小的异或和
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3949
XOR
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 4731 Accepted Submission(s): 1658
For each test case, the first line is an integer N(1<=N<=10000), the number of numbers below. The second line contains N integers (each number is between 1 and 10^18). The third line is a number Q(1<=Q<=10000), the number of queries. The fourth line contains Q numbers(each number is between 1 and 10^18) K1,K2,......KQ.
If you choose a single number, the result you get is the number you choose. Using long long instead of int because of the result may exceed 2^31-1.
#include<iostream> #include<string.h> #include<map> #include<cstdio> #include<cstring> #include<stdio.h> #include<cmath> #include<ctype.h> #include<math.h> #include<algorithm> #include<set> #include<queue> typedef long long ll; using namespace std; const ll mod=1e9+7; const int maxn=1e4+10; const int maxk=5e3+10; const int maxx=1e4+10; const ll maxe=1000+10; #define INF 0x3f3f3f3f3f3f #define Lson l,mid,rt<<1 #define Rson mid+1,r,rt<<1|1 ll a[maxn],b[100]; ll m,k; void guass(int n) {memset(b,0,sizeof(b));for(int i=0;i<n;i++){for(int j=63;j>=0;j--){if((a[i]>>j)&1){if(!b[j]){b[j]=a[i];break;}else{a[i]^=b[j];}}}}for(int i=63;i>=0;i--){if(!b[i]) continue;for(int j=i+1;j<=63;j++){if((b[j]>>i)&1) b[j]^=b[i];//为了使得只有b[i]的第i为1,其它的都不为1 }}m=0;for(int i=0;i<=63;i++) if(b[i]) b[m++]=b[i]; } int main() {int t,ca=1,n,q;cin>>t;while(t--){cin>>n;printf("Case #%d:\n",ca++);for(int i=0;i<n;i++){cin>>a[i];}guass(n);cin>>q;while(q--){ll ans=0;cin>>k;if(n!=m) k--;//代表可以是0if(k>=(1ll<<m)) cout<<"-1"<<endl;else{for(int i=0;i<=63;i++) if((k>>i)&1) ans^=b[i];cout<<ans<<endl;}}}return 0; }
转载于:https://www.cnblogs.com/caijiaming/p/9637189.html
hdu3949(线性基,求第k小的异或和相关推荐
- 借组磁带机求第K小元素
如果输入在磁带机上, 你的机器只有一个磁带机驱动器和几十字的内存,如何找第K小的数 1. 遍历一遍磁带,随即选择一个数M 2. 再遍历一遍磁带, 计算大于和小于M的个数,这样就可以获得数M在总序列中的 ...
- 【最详细】BFPRT算法:时间复杂度O(n)求第k小的数字
去年写了一篇对快排进行改进的算法,可以在时间复杂度 O(n)O(n)O(n)的情况下,找到第kkk小的数字. 那时候,我还不知道这个算法叫BFPRT算法--现在知道了,还知道它又被称为中位数的中位数算 ...
- 2019牛客多校第四场 B xor (线性基求交)
xor 思路 题目是要求[l,r][l, r][l,r]的所有集合是否都可以得到xxx,那么显然我们可以对这[l,r][l, r][l,r]个线性基求交,然后再特判能否xxx能否插入,如果能插入,显然 ...
- 分治算法 求第k小元素 O(n) O(nlog2^n)
BFPRT算法:时间复杂度O(n)求第k小的数字(分治算法+快排) 各位小伙伴,由于本篇文章代码太过杂乱.我于 2018年12月25日 对文中介绍的算法进行了重写.点击上面的蓝色字体,可以阅读重写后的 ...
- BFPRT算法:时间复杂度O(n)求第k小的数字(分治算法+快排)
我自己搭建了博客,以后可能不太在CSDN上发博文了,https://www.qingdujun.com/ . 去年写了一篇<分治算法 求第kkk小元素 O(n)O(n)O(n) & O( ...
- 两个有序数组合起来求第k小的数+左老师专访ACM大神(笔记)8月5日斗鱼直播实录
1.长度相等的两个有序数组寻找上中位数 注:上中位数1 2 3 4 5 6为3(偶数两个中位数为前面那个) 思路:去掉不可能为上中位数的,剩下的简化组合求上中位数. 1.1 奇数序列 位置 位置 位置 ...
- 线性时间选择求第k小数(分治)
目录 线性时间选择 优化 对划分进行随机数改良 取中位数进行划分 全部代码 线性时间选择 问题描述:给定线性序集中 n 个元素和一个整数 k(1 <= k <= n),要求找出着 n 个元 ...
- 求第k小元素:采用特定分治策略
问题[描述算法问题,首选形式化方式(数学语言),其次才是非形式化方式(日常语言)]设L是n个元素的集合,从L中选取第k小的元素,其中1<=k<=n.这里的第k小元素是指,当L按从小到大排好 ...
- POJ 1442 Black Box(大小堆,求第K小的元素)
文章目录 1. 题目链接 2. 题目解读 3. 代码 3.1 Runtime Error 代码 1. 题目链接 http://poj.org/problem?id=1442 2. 题目解读 可以利用大 ...
最新文章
- vcm驱动芯片原理_T6322A|电源芯片的内部设计是怎样的?
- Android--框架布局
- C++编程-预定义宏
- (第六场)Singing Contest 【模拟】
- 人工神经网络_验证码破译(数据挖掘入门与实践-实验9)
- php 精度运算,PHP BC 库(任意精度数字运算) | 网游世界
- linux下dns服务器安装,Linux下DNS服务器安装配置方法详细介绍
- 官方科普iQOO 5 120W闪充方案:首发6C高倍率电芯 15分钟充入100%
- INPUT只能输入数字
- 中山纪念中学培训DAY1
- 【VerySky原创】怎么查找系统中的锁对象
- 使用 ExpandableListView 实现折叠ListView
- SpreadJS V14.2.0 放假前Crack
- 栈和队列_入门oj题目练习:1用队列实现栈2用栈实现队列
- 设计师经常逛的色彩搭配网站—配色方案吧
- matlab产生窄带信号,窄带信号
- mysql 获取当天0点 和 当天23点59分59秒
- nyoj54小明的存钱计划
- 关于ThinkPad T490s 风扇不转动问题
- 利用telemetry进行权限维持
热门文章
- 关于 error: LNK1123: failure during conversion to COFF: file invalid or corrupt 错误的解决方案【Qt】【 VS2010】
- TOMCAT启动汉字乱码解决方案
- IDEA(2018)连接MySQL数据库失败的解决方法(报错08001)
- 【实践】面向广告主的猜你喜欢推荐与B端用户增长实践.pdf(附下载链接)
- 【实践】万字干货:如何优雅地记录操作日志?(附代码)
- 【报告分享】2020金融兴趣人群内容消费及理财意识洞察报告.pdf(附下载链接)...
- classification、part segmentation、semantic segmentation、instance segmentation
- 图嵌入表示TADW:当DeepWalk加上外部文本信息
- 开发物体识别桌、_Tofu3 热红外可见光双光AI目标识别跟踪
- Facebook广告营销的6个方法经验分享