首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
BZOJ 2844 albus就是要第一个出场(高斯消元)
】的更多相关文章
BZOJ 2844: albus就是要第一个出场 [高斯消元XOR 线性基]
2844: albus就是要第一个出场 题意:给定一个n个数的集合S和一个数x,求x在S的$2^n$个子集从小到大的异或和序列中最早出现的位置 一开始看错题了...人家要求的是x第一次出现位置不是第x个是谁 求出线性基后我们知道一共有$2^r$个不同的数,再知道每个数出现了几次就好啦 每个数出现了$2^{n-r}$次....因为有$n-r$个线性相关(高斯消元后全0了)的方程异或不影响.... 然后就简单了,从高到低枚举二进制位,异或这一位后小于k就加上 #include <iostream>…
bzoj 2844: albus就是要第一个出场 高斯消元
LINK 题意:看题目不如看样例解释.给出有n个数的集合,对这些子集中的数求异或,升序统计所有子集得到的数(重复会被计入),询问一个数x,问这个数出现的第一个位置 思路:在这里要求一个所有可能出现的异或值,对于这个要求有个思想和概念很适用这类题——线性基.线代里面学过线性无关组,可用高斯消元解得,在本题中的线性基类似,是能够构造所有出现异或值得线性无关组.总的来说本质思维就是高斯消元. /** @Date : 2017-07-03 10:40:20 * @FileName: bzoj 2844…
BZOJ 2844 albus就是要第一个出场 ——高斯消元 线性基
[题目分析] 高斯消元求线性基. 题目本身不难,但是两种维护线性基的方法引起了我的思考. void gauss(){ k=n; F(i,1,n){ F(j,i+1,n) if (a[j]>a[i]) swap(a[i],a[j]); if (!a[i]) {k=i-1; break;} D(j,30,0) if (a[i]>>j & 1){ b[i]=j; F(x,1,n) if (x!=i && a[x]>>j&1) a[x]^=a[i];…
【BZOJ2844】albus就是要第一个出场 高斯消元求线性基
[BZOJ2844]albus就是要第一个出场 Description 已知一个长度为n的正整数序列A(下标从1开始), 令 S = { x | 1 <= x <= n }, S 的幂集2^S定义为S 所有子集构成的集合.定义映射 f : 2^S -> Zf(空集) = 0f(T) = XOR A[t] , 对于一切t属于T现在albus把2^S中每个集合的f值计算出来, 从小到大排成一行, 记为序列B(下标从1开始). 给定一个数, 那么这个数在序列B中第1次出现时的下标是多少呢? I…
BZOJ 2844: albus就是要第一个出场
2844: albus就是要第一个出场 Time Limit: 6 Sec Memory Limit: 128 MBSubmit: 1134 Solved: 481[Submit][Status][Discuss] Description 已知一个长度为n的正整数序列A(下标从1开始), 令 S = { x | 1 <= x <= n }, S 的幂集2^S定义为S 所有子 集构成的集合.定义映射 f : 2^S -> Zf(空集) = 0f(T) = XOR A[t] , 对于一切…
BZOJ 2844 albus就是要第一个出场(高斯消元)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2844 题意: 给出一个长度为n的正整数数列A.每次选出A的一个子集进行抑或(空集抑或值为0),这样就得到一个长度为2^n的数列B.将B中元素升序排序.给出一个数字m,求m的B中出现的最小位置. 思路:首先将数字看做是二进制进行高斯消元,最后得到k个线性无关的数字,那么B中所有数字均可由这k个线性无关的数字得到,可以得到2^k个不同数字,每个数字在B中出现2^(n-k)次.因此,对于m,…
bzoj 2844 albus就是要第一个出场 - 线性基
题目传送门 这是个通往vjudge的虫洞 这是个通往bzoj的虫洞 题目大意 给定集合$S$,现在将任意$A\subseteq S$中的元素求异或和,然后存入一个数组中(下标从1开始),然后从小到大排一个序.问$q$第一次出现在$A$中的下标. 我们可以通过线性基得到值域上有多少个异或和比$q$小,现在问题来了,怎么求$q$的下标. 通过打表找规律,以及手动枚举可以发现一个结论. 定理1 设线性基为$B$,那么在$S$的子集的异或和中,出现的异或和的出现的次数是$2^{\left | S \ri…
bzoj 2844 albus就是要第一个出场 异或和出现次数 线性基
题目链接 题意 给定\(n\)个数,将其所有的子集(\(2^n\)个)的异或和按升序排列.给出一个询问\(q\),问\(q\)在该序列中第一次出现位置的下标(下标从\(1\)开始). 题解 结论 记其线性基为\(\mathfrak B\),则每个异或和出现的次数为\(2^{n-|\mathfrak B|}\). 证明 从高斯消元的角度看,将\(n\)个数看作\(n\)个行向量,经行等价变换后得到一个行简化梯形矩阵,非零行的行数为\(|\mathfrak B|\),而下面的\(n-|\mathfr…
2844: albus就是要第一个出场
2844: albus就是要第一个出场 链接 分析: 和HDU3949差不多互逆,这里需要加上相同的数. 结论:所有数任意异或,构成的数出现一样的次数,次数为$2^{n-cnt}$,cnt为线性基的大小. 结论:集合中所有异或值为0的集合有$2^{n-cnt}$个(包括空集). 证明及详细过程参考:https://blog.sengxian.com/algorithms/linear-basis,https://blog.csdn.net/jaihk662/article/details/786…
bzoj 1013 [JSOI2008]球形空间产生器sphere(高斯消元)
1013: [JSOI2008]球形空间产生器sphere Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 3584 Solved: 1863[Submit][Status][Discuss] Description 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被困在了这个n维球体中,你只知道球面上n+1个点的坐标,你需要以最快的速度确定这个n维球体的球心坐标,以便于摧毁这个球形空间产生器. Input 第一行是一个整数,n.接…