HDU 3949 XOR——————线性基

卡尔曼滤波算法-Kalman Filter Algorithm Kalman滤波是一种递归过程,主要有两个更新过程:时间更新和观测更新,其中时间更新主要包括状态预测和协方差预测,主要是对系统的预测,而观测更新主要包括计算卡尔曼增益、状态更新和协方差更新,因此整个递归过程主要包括五个方面的计算:1)状态预测;2)协方差预测;3)卡尔曼增益;4)状态更新;5)协方差更新; 用数学公式表示,如下: 状态预测:(1) 其中,X(k|k)是k时... 阅读详情

XOR

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 6800 Accepted Submission(s): 2379

Problem Description
XOR is a kind of bit operator, we define that as follow: for two binary base number A and B, let C=A XOR B, then for each bit of C, we can get its value by check the digit of corresponding position in A and B. And for each digit, 1 XOR 1 = 0, 1 XOR 0 = 1, 0 XOR 1 = 1, 0 XOR 0 = 0. And we simply write this operator as ^, like 3 ^ 1 = 2,4 ^ 3 = 7. XOR is an amazing operator and this is a question about XOR. We can choose several numbers and do XOR operatorion to them one by one, then we get another number. For example, if we choose 2,3 and 4, we can get 234=5. Now, you are given N numbers, and you can choose some of them(even a single number) to do XOR on them, and you can get many different numbers. Now I want you tell me which number is the K-th smallest number among them.

Input
First line of the input is a single integer T(T<=30), indicates there are T test cases.
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.

Output
For each test case,first output Case #C: in a single line,C means the number of the test case which is from 1 to T. Then for each query, you should output a single line contains the Ki-th smallest number in them, if there are less than Ki different numbers, output -1.

Sample Input
2
2
1 2
4
1 2 3 4
3
1 2 3
5
1 2 3 4 5

Sample Output
Case #1:
1
2
3
-1
Case #2:
0
1
2
3
-1

Hint
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.


线性基

/*--------- hongjie ----------*/
#include<bits/stdc++.h>
#include<cstdio>
#include<iostream>
#include<cmath>
#include<string>
#include<cstring>
#include<algorithm>
#include<queue>
#include<map>
#include<bitset>
#include<set>
#include<vector>


using namespace std;
typedef long long ll;
typedef pair<int ,int> P;

const int INF  = 0x3f3f3f3f;
const int MAXN = 1e5+7;

ll a[MAXN],b[66],k;
int T,n,q,zero = 0;
std::vector<ll> ve;

void prepare(int n) {
        memset(b,0,sizeof(b));
        int cnt = 0;
        for(int i=0;i<n;++i)
                for(int j=63; j>=0; --j)
                        if(a[i]>>j&1) {
                                if(b[j]) a[i] ^= b[j];
                                else {
                                        cnt ++;
                                        b[j] = a[i];
                                        for(int k=j-1;k>=0;--k)
                                                if(b[k]&&(b[j]>>k&1))
                                                        b[j] ^= b[k];
                                        for(int k=j+1;k<=63;++k)
                                                if(b[k]>>j&1)
                                                        b[k] ^= b[j];
                                        break;
                                }
                        }
        zero = cnt != n;
        ve.clear();
        for(int i=0;i<=63;++i)
                if(b[i])        ve.push_back(b[i]);

}

ll query(ll k) {
        if(zero)        k--;
        if(k >= (1LL<<(int)ve.size()))  return -1;
        ll ans = 0;
        for(int i=0;i<(int)ve.size();++i)
                if(k>>i&1)      ans ^= ve[i];
        return ans;
}

int main(){
        // freopen("../in.txt","r",stdin);
        // freopen("../out.txt","w",stdout);
        scanf("%d",&T);
        for(int t = 1; t <= T; t++) {
                scanf("%d",&n);
                for(int i=0; i < n; ++i)
                        scanf("%I64d",&a[i]);
                prepare(n);
                scanf("%d",&q);
                printf("Case #%d:\n",t);
                for(int i=0;i<q;++i) {
                        scanf("%I64d",&k);
                        printf("%I64d\n", query(k));
                }
        }
        return 0;
}
PCB层叠结构与阻抗计算 1.Core 和 PP PCB两个重要组成部分:Core 和 Prepreg(半固态片,简称PP)。 如下图所示, Core 的两个表面都铺有铜箔,可作为信号层、电源层、地层等导电层,Core的上下表面之间填充的是固态材料; PP的表面不铺铜,在PCB中起填充作用,其材质是半固体的树脂材料,因此比Core略软一些。 在制作多层板时,需配合使用Core和PP,一般在两个Core 之间应选PP作为填... 阅读详情

相关推荐

CANape快速上手

文章帮助记录CANape学习过程。

小弱鸡的博客 1万+

HDU - 3949 线性基

首先求出线性基,并且进一步尽可能的使的p[i]除了第i位是1以外,取余全0,尽量使得除了主对角线其余元素都为0; 之后判断线性基的秩,若秩!=元素个数,说明元素之间异或会出现0的情况,那么需要将k-1,因为此时剩余的非零向量间是无法异或出0的情况的,0是最小的异或值; 假设秩为x,那么向量间相互异或的可能情况有1<<x种,若k>=(1<<x),则说明不可异或出,否...

cy41的博客 258

51单片机学习(5)-----蜂鸣器的介绍与使用

蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计 算机、 打印机、 复印机、 报警器、 电子玩具、 汽车电子设备、 电话机、 定 时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。1.半导体三极管也称为晶体三极管,可以说它是电子电路中最重要的器件。三极管顾名思义具有三个电极。二极管是由一个PN结构成的,而三极管由两个PN结构成,共用的一个电极成为三极管的基极(用字母b表示)。其他的两个电极成为集电极(用字母c表示)和发射极(用字母e表示)。

2302_80260350的博客 1万+

hdu3949(异或第k小&&线性基)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3949 思路:线性基原本是第i个位置最先出现1的位置是第i位,特殊处理一下让他变成只有第i位出现了1,这样不难想到可以异或出(1&lt;&lt;cnt)个数,然后再特判一下0就好了。 #pragma GCC optimize(2) #include &lt;cstdio&gt; #include ...

llmxby 355

时空数据建模的跨节点联邦图神经网络:KDD21 Cross-Node Federated Graph Neural Network for Spatio-Temporal Data Modeling

前言 联邦学习(FL)虽然已经被广泛研究,但是对复杂的时空依赖关系进行建模以提高预测能力仍然是一个开放的问题。此外目前最优的时空预测模型假定对数据的访问不受限制,忽略了对数据共享的限制。基于此,本文提了一个基于图联邦学习的时空数据模型 Cross-Node Federated Graph Neural Network (CNFGNN),该模型在跨节点联邦学习的约束下,使用基于图神经网络(GNN)的架构对底层图结构进行编码,属于结构化联邦的一种,每个本地模型利用私有数据进行学习,并保持分散性。CNFGNN

qq_56027260的博客 1810

AUTOSAR从入门到精通-【应用实战篇】车载HMI-ADAS

ADAS是高级驾驶辅助系统(Advanced Driving Assistance System)简称ADAS。ADAS高级驾驶辅助系统是利用安装于车上的各式各样的传感器, 在第一时间收集车内外的环境数据, 进行静、动态物体的辨识、侦测与追踪等技术上的处理, 从而能够让驾驶者在最快的时间察觉可能发生的危险, 以引起注意和提高安全性的主动安全技术。

lin_xiu的博客 1435

HDU-3949-线性基

题目 线性基是学线性代数上出现的概念,没想到那么有用。把一个集合弄成一个极大无关子集,就能把他所能表示的数都能存起来。求第k小我也不会证。。就当先存个板子吧 #include<bits/stdc++.h> using namespace std; typedef long long LL; #define fio ios::sync_with_stdio(false);cin.tie(...

xuxiaobo1234的博客 271

SIMULINK开发项目实例 1000 例专栏之第960例--基于电力系统稳定性的建模与仿真场景:-含分布式电源的配电网电压稳定性研究

间歇性与随机性:例如,太阳能依赖于日照强度,风能依赖于风速,这使得它们的输出功率具有不确定性。逆变器接口:大多数分布式电源通过逆变器接入电网,这对电网的动态响应特性产生了影响。位置分散:通常分布在用户侧或靠近负荷中心的位置。本文详细介绍了如何使用Simulink结合Simscape Electrical 构建一个用于研究含分布式电源配电网电压稳定性的模型,并提供了详细的仿真流程说明。

xiaoheshang_123的博客 153

hdu 3949 (线性基学习)

题意:给N个数, 求异或和第k大的数 线性基:高斯消元构造对角矩阵,具体理论证明看其他详细介绍 把k二进制拆分,第i位上有1,就把第i个线性基异或进来。 原因: 因为线性基是一堆高位上的1(或许有一些位动不了),然后把这样每一位可以填0/1,跟二进制差不多,第i位为1时取当前行的矩阵值,就能得到第k大的值了 注意:输出lld会wa,输出I64u #inclu

a838502647的博客 352

AUTOSAR MCAL开发及EB Tresos工具使用总结

在基于AutoSar CP架构开发MCAL时,会使用到EB tresos工具。本文主要对MCAL开发及EB tresos工具使用进行总结,仅作为自学使用,以方便后续查漏补缺。

liuxu324的博客 2628

平头哥面试——芯片工程师面经

有5个成递增关系的32bit地址值,彼此之间的间隔大小不确定,可以把他们当成parameter来输入模块,现有一个32bit输入数据,要求用尽量少资源去的判断这个数处于哪2个地址之间(地址区间),并且输出区间号。a)后续大概会在9月下旬谈具体的薪资,他们现在也没想好今年应届生的薪资该给多少,到时候如果可以签三方的话可能会跳过意向书环节直接发offer,谈薪资肯定是通过电话来。b. 这边的CPU是自己研制的(玄铁),成都这边主要做存储和网络,都有SOC。a. 成都这边的网络部门具体做的业务有哪些?

FPGA/MATLAB学习教程/源码/项目合作开发 2688

HDU 3949 线性基

题意 传送门 HDU 3949 题解 处理集合异或的值域,考虑线性基。线性基的子集的异或即集合的异或非零值域,若集合中出现可以由线性基表达的值,或说线性基的规模小于集合规模,那么集合异或的值域包含零,需要特殊处理。 考虑值域第 kkk 大,从高位向低位用类似二分的方法处理。假设已处理好大于 iii 位的线性基,若第 iii 位存在线性基,[0,i−1][0,i-1][0,i−1] 位存在 nnn 个线性基,那么可以构成 2n2^n2n 个包含空集且小于包含第 iii 位线性基的值,根据 kkk 值判断是否使

neweryyy的博客 231

倍福EL5101模块连接编码器

1、 EL5101模块简介:EL5101为单通道增量型编码器计数模块,一共有EL5101-0000、EL5101-0010、EL5101-0011、EL5101-0090(尚未供货)四种型号,其中EL5101-0000比较常用,本例使用EL5101-0000连接增量型编码器 2、 硬件外观和接线 在这里插入图片描述 3、 指示灯说明 4、和编码器连接的案例 ......

weixin_41883890的博客 6501

HDU-3949 XOR (线性基求异或第 k 小)

HDU-3949 XOR 题目 给出n个数,任选大于等于1个数进行异或,得到的结果加入一个集合,问这个集合中第k大的数是多少? 分析 线性基可以求一组数所有异或可能的取值的顺序,即第 k 大,第 k 小。上模板就行。 代码 #include <cstdio> #include <iostream> #include <cmath> #include <ve...

Stormjing的博客 587

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

【HDU3949】XOR 线性基

题意:给若干个数让你异或,然后询问第k大的异或和。 题解: 先搞出来线性基,然后第k大的异或和就是: 把k二进制拆分,第i位上有1,就把第i个线性基异或进来。 原因: 因为线性基是一堆高位上的1(或许有一些位动不了),然后把这样每一位可以填0/1,跟二进制差不多。 自己脑补去吧。 ……我在说什么啊,我明白但是懒得写了。别管了,扒代码或者留言神马的吧。 经验之

辗转山河弋流歌 5329

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

HDU3949 XOR (线性基)

HDU3949 XOR Problem Description XOR is a kind of bit operator, we define that as follow: for two binary base number A and B, let C=A XOR B, then for each bit of C, we can get its value by check ...

weixin_30905981的博客 103

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

HDU 3949 XOR 线性基

HDU 3949 XOR Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 5487 Accepted Submission(s): 1927 Problem Description: XOR is a kind of bit...

qq_43710979的博客 238

hdu3949 XOR (线性基(高斯消元))

hdu3949 XOR 原题地址:http://acm.hdu.edu.cn/showproblem.php?pid=3949题意: T组数据, 每组数据给n个数,m个询问,对于每个询问给出一个k,询问给的n个数,选取任意非空子集,能异或出的数中第k小的,重复的数不计算。 数据范围 T<=30,1<=N<=10000,1<=Q<=10000 each number is between 1

Bfk的博客 677

Hdu 3949 XOR 线性基

XOR Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3357    Accepted Submission(s): 1155 Problem Description XOR is a kind of bit o

J. Cole 258

[HDU 3949]XOR(线性基板子)

题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=3949 题目大意 给定nnn个数以及q个询问,每个询问要求输出这nnn个数的所有非空子集的异或值中第kkk小的值,若不存在该值输出-1。 思路 裸的线性基,顺便放个板子。 AC代码 #include<stdio.h> #include<algorithm> #include&lt...

asdkjc的博客 254

HDU_3949 XOR 【线性基】

一、题目   XOR 二、分析   给定$N$个数,问它的任意子集异或产生的数进行排列,求第K小的数。   构造出线性基$B$后,如果$|B| < N$,那么代表N个数中有一个数是可以由线性基中的其他数异或出来的,那么相当于可以异或出$0$。也就是说这种情况下会多一个0作为最小数。   然后对于第$K$大,可以直接对$K$的二进制进行判断,如果为$1$就取线性基对应的数,...

weixin_30399155的博客 134

HDU3949 XOR【线性基】

线性基求第k小模板题 模板Code: #include<cstdio> #include<cstring> #include<algorithm> #define maxn 10005 #define LL long long using namespace std; int T,n,Q,cnt; LL d[61]; bool zero; long long s...

Master.Yi的博客 210

HDU 3949 XOR (线性基)

题目链接:HDU 3949 Problem Description XOR is a kind of bit operator, we define that as follow: for two binary base number A and B, let C=A XOR B, then for each bit of C, we can get its value by chec...

G19850917的博客 412

HDU - 3949 XOR 线性基

题目链接:https://cn.vjudge.net/problem/HDU-3949 题意:查询异或结果第k小的数 题解:因为有异或结果为0的情况,所以在插入的时候,判断下是否每一个位置都有线性基了,如果都有了,那就说明能异或得到0,然后如果有0的存在的话,进行查询第k大函数的时候注意把k减一 #include <bits/stdc++.h> using namespace ...

还我笑颜 187

[HDU3949] 线性基+xor第k大

[HDU3949] zbl zbl 把线性基中非零元素排出来 按照k的二进制分解选择 如果线性基外有元素k-- 正确性显然,类比k的二进制表示 Code  #include&lt;bits/stdc++.h&gt; #define rep(i,a,b) for(ll i=(a);i&lt;=(b);i++) #define per(i,a,b) for(ll i=(a);i&gt...

Shelter 376

【HDU3949】XOR(线性基)

Description 给你nnn个不大于1018101810^{18}的数,有qqq次询问,每次给定kkk,求这nnn个数中所有可以通过异或运算得到的数中第kkk小的数。 Solution 算是线性基模板题吧。 把nnn个数插入线性基,进行如下处理: 从高位向低位枚举,若一个数除了最高位外还有其他位上有111且该位对应的低位的数非000,那么将高位的数异或低位上的数。感觉说不清楚,...

დ♂Hany01's Blog Space♂ღ 332
上一篇: HDU 6582 Path——————2019多校第一场,最短路+最大流
下一篇: POJ 3669 Meteor Shower——————bfs
陶鸿杰
博客等级 码龄9年 93粉丝 298原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值