【高斯消元】【异或方程组】【bitset】bzoj1923 [Sdoi2010]外星千足虫
Xor方程组解的个数判定:
——莫涛《高斯消元解Xor方程组》
使用方程个数判定:消去第i个未知数时,都会记录距第i个方程最近的第i位系数不为0の方程是谁,这个的max就是使用方程个数。
使用bitset加速。
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<bitset>
using namespace std;
#define N 1001
#define M 2001
int n,m,use;
char s[N];
bool A[M][N+1],x[N],b[M];
bitset<N+1>B[M];
bool guass_jordan()
{
for(int i=1;i<=m;++i)
for(int j=1;j<=n;++j)
B[i][j]=A[i][j];
for(int i=1;i<=m;++i)
B[i][n+1]=b[i];
for(int i=1;i<=n;++i)
{
int j=i;
for(;j<=m;++j)
if(B[j][i])
break;
if(j==m+1)
return 0;
use=max(use,j);
swap(B[i],B[j]);
for(j=1;j<=m;++j)
if(i!=j&&B[j][i])
B[j]^=B[i];
}
for(int i=1;i<=m;++i) x[i]=B[i][n+1];
return 1;
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=m;++i)
{
scanf("%s%d",s,&b[i]);
for(int j=0;j<n;++j)
A[i][j+1]=s[j]-'0';
}
if(!guass_jordan())
puts("Cannot Determine");
else
{
printf("%d\n",use);
for(int i=1;i<=n;++i)
puts(x[i]?"?y7M#":"Earth");
}
return 0;
}
【高斯消元】【异或方程组】【bitset】bzoj1923 [Sdoi2010]外星千足虫的更多相关文章
- BZOJ.1923.[SDOI2010]外星千足虫(高斯消元 异或方程组 bitset)
题目链接 m个方程,n个未知量,求解异或方程组. 复杂度比较高,需要借助bitset压位. 感觉自己以前写的(异或)高斯消元是假的..而且黄学长的写法都不需要回代. //1100kb 324ms #i ...
- bzoj千题计划188:bzoj1923: [Sdoi2010]外星千足虫 (高斯—若尔当消元法解异或方程组)
http://www.lydsy.com/JudgeOnline/problem.php?id=1923 #include<cstdio> #include<cstring> ...
- UVA11542 Square(高斯消元 异或方程组)
建立方程组消元,结果为2 ^(自由变元的个数) - 1 采用高斯消元求矩阵的秩 方法一: #include<cstdio> #include<iostream> #includ ...
- Tsinsen-A1488 : 魔法波【高斯消元+异或方程组】
高斯消元. 自己只能想出来把每一个点看成一个变量,用Xi表示其状态,这样必定TLE,n^2 个变量,再加上3次方的高斯消元(当然,可以用bitset压位). 正解如下: 我们把地图划分成一个个的横条和 ...
- 【题解】 bzoj1923: [Sdoi2010]外星千足虫 (线性基/高斯消元)
bzoj1923,戳我戳我 Solution: 这个高斯消元/线性基很好看出来,主要是判断在第K 次统计结束后就可以确定唯一解的地方和\(bitset\)的骚操作 (我用的线性基)判断位置,我们可以每 ...
- BZOJ1923:[SDOI2010]外星千足虫(高斯消元)
Description Input 第一行是两个正整数 N, M. 接下来 M行,按顺序给出 Charles 这M次使用“点足机”的统计结果.每行 包含一个“01”串和一个数字,用一个空格隔开.“01 ...
- BZOJ1923 [Sdoi2010]外星千足虫 【高斯消元】
题目 输入格式 第一行是两个正整数 N, M. 接下来 M行,按顺序给出 Charles 这M次使用"点足机"的统计结果.每行 包含一个"01"串和一个数字,用 ...
- bzoj1923[Sdoi2010]外星千足虫(高斯消元)
Description Input 第一行是两个正整数 N, M. 接下来 M行,按顺序给出 Charles 这M次使用“点足机”的统计结果.每行 包含一个“01”串和一个数字,用一个空格隔开.“01 ...
- BZOJ1923: [Sdoi2010]外星千足虫
传送门 高斯消元求解Xor方程. 这个方程很容易换成xor的方程.然后用高斯消元搞就行了. 用bitset实现这个非常方便. //BZOJ 1923 //by Cydiater //2016.11.3 ...
随机推荐
- ExtJS 4.1 TabPanel动态加载页面并执行脚本【转】
ExtJS 4.1 TabPanel动态加载页面并执行脚本 按照官方示例,可以动态加载页面,可是脚本不执行,于是查SDK.google,发现scripts需要设置为true,于是设置该属性,整个代码如 ...
- HDU1828 Picture 线段树+扫描线模板题
Picture Time Limit: 6000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Sub ...
- eclipse tomcat 插件
下载地址http://www.eclipsetotale.com/tomcatPlugin.html#A3
- 马上给Meltdown和Spectre漏洞打补丁
元旦之后的第一个工作日可谓是惊喜不断,4号就传来了 Google Project Zero 等团队和个人报告的 Meltdown 和 Spectre 内核漏洞的消息,首先简单介绍一下这两个内核漏洞. ...
- 动态规划:状压DP
状压DP可以用在NP问题的小规模求解中(不理解,感觉和可以搜索的题很类似) 如果状态是个网格,数据范围很小,基本锁定状压DP 例题是BZOJ1725 题意是这样的,给定一个黑白图,然后种田,要求田与田 ...
- Spring - IoC(2): 属性注入 & 构造注入
依赖注入是指程序运行过程中,如果需要另外的对象协作(访问它的属性或调用它的方法)时,无须在代码中创建被调用者,而是依赖于外部容器的注入. 属性注入(Setter Injection) 属性注入是指 I ...
- swift方法 的写法,ui上拖拽的控件到controller里面的方法
直接点xcode右上角三个按键中间一下,左右拆分为storyboard和controller, 点击button,按ctrl,然后拖拽到controller里面即可生成对应的点击事件在controll ...
- JS形参与实参问题
JavaScript的参数传递也都是采用值传递的方式进行传值. (1) 通过实参调用函数的时候,传入函数里的是实参的副本而不是实参,因此在函数里面修改参数值并不会对实参造成影响. 例如:将全局 ...
- vbs登陆网站
Option Explicit Dim objIE Set objIE = CreateObject("InternetExplorer.Application") objIE.V ...
- python通过多进程实行多任务
#原创,转载请联系 在开始之前,我们要知道什么是进程.道理很简单,你平时电脑打开QQ客户端,就是一个进程.再打开一个QQ客户端,又是一个进程.那么,在python中如何用一篇代码就可以开启几个进程呢? ...
