高斯消元与xor方程组
for(i=;i<=n;i++)
{
for(j=i+;j<=n;j++)
if(a[j]>a[i]) swap(a[i],a[j]);
if(!a[i]) break;
for(j=;j>=;j--)
if(a[i]>>j&)
{
for(k=;k<=n;k++)
if(i!=k && (a[k]>>j&)) a[k]^=a[i];
break;
}
}
对着这个代码思(dan)考(teng)了一星期。。。
UPD:好像这两份代码干的事情一样?做完之后每一个数的最高位上只有这一个1。T_T谁能告诉我这两份代码有什么区别?各有什么用?还有为什么要这么做?
for(int i=;i<=n;i++)
for(int j=;j>=;j--)
{
if(a[i]>>(j-)&)
{
if(!lb[j]){lb[j]=a[i];break;}
else a[i]^=lb[j];
}
}
我们来证明一下,为什么消了元之后的a数组的任何一种选法对应原数组的一种选法?(SX问题,神犇请无视T_T)
假如我们有一个集合S=[x,S-{x}],那么对集合S选取的一种方案可以对应到S'=[x,{y^x|y∈{S-{x}}}]
令S-{X}=A,{y^x|y∈{S-{x}}}=B
因为假如这个方案
1)选x
i)另外选了奇数个A中的元素,那么S‘中的方案对应为 不选x,在B中选对应的元素
ii)另外选了偶数个A中的元素,那么S’中的方案对应为 选x,在B中选对应的元素
2)不选x
i)另外选了奇数个A中的元素,那么S‘中的方案对应为 选x,在B中选对应的元素
ii)另外选了偶数个A中的元素,那么S’中的方案对应为 不选x,在B中选对应的元素
所以这是一一对应的。所以我们就可以随便用某个方程取异或其它方程,选与不选还是相互独立且合法的。
(咦?我怎么想到了矩阵的初等变换?)
求大神给出简单证明T_T
高斯消元与xor方程组的更多相关文章
- 【高斯消元解xor方程组】BZOJ2466-[中山市选2009]树
[题目大意] 给出一棵树,初始状态均为0,每反转一个节点的状态,相邻的节点(父亲或儿子)也会反转,问要使状态均为1,至少操作几次? [思路] 一场大暴雨即将来临,白昼恍如黑夜!happy! 和POJ1 ...
- POJ 1222 EXTENDED LIGHTS OUT(高斯消元解XOR方程组)
http://poj.org/problem?id=1222 题意:现在有5*6的开关,1表示亮,0表示灭,按下一个开关后,它上下左右的灯泡会改变亮灭状态,要怎么按使得灯泡全部处于灭状态,输出方案,1 ...
- 关于高斯消元解决xor问题的总结
我觉得xor这东西特别神奇,最神奇的就是这个性质了 A xor B xor B=A 这样就根本不用在意重复之类的问题了 关于xor的问题大家可以去膜拜莫队的<高斯消元解XOR方程组>,里面 ...
- 【高斯消元解xor方程】BZOJ1923-[Sdoi2010]外星千足虫
[题目大意] 有n个数或为奇数或为偶数,现在进行m次操作,每次取出部分求和,告诉你这几次操作选取的数和它们和的奇偶性.如果通过这m次操作能得到所有数的奇偶性,则输出进行到第n次时即可求出答案:否则输出 ...
- poj1830(高斯消元解mod2方程组)
题目链接:http://poj.org/problem?id=1830 题意:中文题诶- 思路:高斯消元解 mod2 方程组 有 n 个变元,根据给出的条件列 n 个方程组,初始状态和终止状态不同的位 ...
- UVA11542 Square(高斯消元 异或方程组)
建立方程组消元,结果为2 ^(自由变元的个数) - 1 采用高斯消元求矩阵的秩 方法一: #include<cstdio> #include<iostream> #includ ...
- Tsinsen-A1488 : 魔法波【高斯消元+异或方程组】
高斯消元. 自己只能想出来把每一个点看成一个变量,用Xi表示其状态,这样必定TLE,n^2 个变量,再加上3次方的高斯消元(当然,可以用bitset压位). 正解如下: 我们把地图划分成一个个的横条和 ...
- BZOJ.1923.[SDOI2010]外星千足虫(高斯消元 异或方程组 bitset)
题目链接 m个方程,n个未知量,求解异或方程组. 复杂度比较高,需要借助bitset压位. 感觉自己以前写的(异或)高斯消元是假的..而且黄学长的写法都不需要回代. //1100kb 324ms #i ...
- poj1222(枚举or高斯消元解mod2方程组)
题目链接: http://poj.org/problem?id=1222 题意: 有一个 5 * 6 的初始矩阵, 1 表示一个亮灯泡, 0 表示一个不亮的灯泡. 对 (i, j) 位置进行一次操作则 ...
随机推荐
- iOS Core data多线程并发访问的问题
大家都知道Core data本身并不是一个并发安全的架构:不过针对多线程访问带来的问题,Apple给出了很多指导:同时很多第三方的开发者也贡献了很多解决方法.不过最近碰到的一个问题很奇怪,觉得有一定的 ...
- 使用JS启动本地应用程序、屏幕键盘
问题描述: 现在希望在Web端使用JS调用本地应用程序 问题解决: (1)使用JS启动本地应用程序 使用上述代码重点是创建了一个ActiveXObject的对象 参考说明: ...
- 中国餐馆过程(CRP)
查如何事先确定聚类簇数目发现的,是对狄利克雷过程的(DP)的一种解释. 假设一个中国餐馆有无限的桌子,第一个顾客到来之后坐在第一张桌子上.第二个顾客来到可以选择坐在第一张桌子上,也可以选择坐在一张新的 ...
- 一些css效果积累
悬浮效果: ul li a{text-decoration: none;color: black} ul li a:hover{color: blue} 鼠标变小手 span:hover{cur ...
- (转)CentOS5.5 下搭建 PHP 环境(最佳的LAMP环境)
本文详细阐述在 Linux 系统中搭建 PHP 环境,由于 PHP 就是由 C 语言编写的,最初也是运行在 Linux 系统中,所以Linux 是 PHP 的最佳环境. 关于本文中使用到的软件,请点击 ...
- contentType,pageEncoding,charset,setCharacterEncoding
contentType,pageEncoding,charset,setCharacterEncoding HTML中的meta标签,以及HTTP Header. -------------字符集.字 ...
- 6 个基于 jQuery 的表单向导插件推荐
表单向导可以很好地引导用户进行一步一步的操作,从而降低用户错误输入的几率.尽管互联网中有大量的类似插件,但真正好用的不多. 本文整理了6个比较优秀的表单向导插件,希望能够为你带来帮助. 1. Smar ...
- Unity3D脚本中文系列教程(十)
http://dong2008hong.blog.163.com/blog/static/4696882720140312627682/?suggestedreading&wumii Unit ...
- javax.mail.MessagingException: 501 Syntax: HELO hostname Linux端异常解决
在项目里面使用javamail在window环境正常,放在服务器上面的时候抛出异常javax.mail.MessagingException: 501 Syntax: HELO hostname ,原 ...
- 轻轻修改配置文件完成 OpenStack 监控
当我们使用虚拟化云平台 OpenStack 时,必然要时时监控其虚拟机性能,随着近年企业级数据中心的不断发展,像混合虚拟化环境的业务需求也在持续增长中,因而也随之带来的监控需求更显重要,所以小编带来一 ...