BZOJ 1923: [Sdoi2010]外星千足虫
Description
给出几个异或方程组求解,\(n \leqslant 2000\)
Sol
高斯消元.
直接消元就行,遇到自由元就直接输出,同时记录一下用到的最高行数.
复杂度不科学就可以用 bitset 啊...跑的灰常快...不过他没有重载某一位的异或操作,需要人工判断一下.
Code
/**************************************************************
Problem: 1923
User: BeiYu
Language: C++
Result: Accepted
Time:336 ms
Memory:1784 kb
****************************************************************/ #include <cstdio>
#include <cstring>
#include <bitset>
#include <iostream>
using namespace std; const int N = 2005; int n,m,ans;
bitset< N > a[N]; /*
void print(){
for(int i=0;i<m;i++) cout<<a[i]<<endl;
cout<<"-------------------------------"<<endl;
}*/ int gauss(){
for(int i=0,r,j;i<n;i++){
for(r=-1,j=i;j<m;j++) if(a[j][i]){ r=j;break; }
// cout<<r<<endl;
// print();
if(r==-1){ puts("Cannot Determine");return 0; }
if(r!=i) swap(a[i],a[r]);
ans=max(ans,r);
for(j=i+1;j<m;j++) if(a[j][i]) a[j]^=a[i];
}
for(int i=n-1;~i;i--){
for(int j=i+1;j<n;j++) if(a[j][n]*a[i][j]){
if(a[i][n]) a[i][n]=0;else a[i][n]=1;
}
}return 1;
}
void out(){
cout<<ans+1<<endl;
for(int i=0;i<n;i++) if(a[i][n]) puts("?y7M#");else puts("Earth");
}
int main(){
// freopen("in.in","r",stdin); scanf("%d%d",&n,&m);
for(int i=0;i<m;i++){
char s[N];int x;
memset(s,0,sizeof(s));
scanf("%s",s);
for(int j=0;j<n;j++) a[i][j]=s[j]-'0';
scanf("%d",&x);
a[i][n]=x;
}
if(gauss()) out();
return 0;
}
BZOJ 1923: [Sdoi2010]外星千足虫的更多相关文章
- bzoj 1923 [Sdoi2010]外星千足虫(高斯消元+bitset)
1923: [Sdoi2010]外星千足虫 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 634 Solved: 397[Submit][Status ...
- BZOJ 1923: [Sdoi2010]外星千足虫 [高斯消元XOR]
1923: [Sdoi2010]外星千足虫 对于 100%的数据,满足 N≤1,000,M≤2,000. 裸高斯消元解异或方程组 给定方程顺序要求用从上到下最少的方程,那么找主元时记录一下最远找到哪个 ...
- BZOJ 1923 SDOI2010 外星千足虫 异或方程组+bitset
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1923 懒得贴题目了......这就是解一个异或方程组的裸题...... YY了一下异或方程 ...
- BZOJ.1923.[SDOI2010]外星千足虫(高斯消元 异或方程组 bitset)
题目链接 m个方程,n个未知量,求解异或方程组. 复杂度比较高,需要借助bitset压位. 感觉自己以前写的(异或)高斯消元是假的..而且黄学长的写法都不需要回代. //1100kb 324ms #i ...
- bzoj 1923: [Sdoi2010]外星千足虫【高斯消元】
裸的异或高斯消元 #include<iostream> #include<cstdio> using namespace std; const int N=2005; int ...
- BZOJ 1923: [Sdoi2010]外星千足虫 高斯消元+bitset
高斯消元求解异或方程组,可以多学一下 $bitset$ 在位运算中的各种神奇操作. #include <cstdio> #include <bitset> #define N ...
- 【BZOJ 1923】1923: [Sdoi2010]外星千足虫 (高斯消元异或 | BITSET用法)
1923: [Sdoi2010]外星千足虫 Description Input 第一行是两个正整数 N, M. 接下来 M行,按顺序给出 Charles 这M次使用“点足机”的统计结果.每行 包含一个 ...
- 1923: [Sdoi2010]外星千足虫
1923: [Sdoi2010]外星千足虫 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 1254 Solved: 799[Submit][Statu ...
- 【BZOJ】1923 [Sdoi2010]外星千足虫(高斯消元)
题目 传送门:QWQ 分析 高斯消元解异或方程组,和解普通方程组差不多. 范围有点大,要套一个bitset. 代码 #include <bits/stdc++.h> using names ...
随机推荐
- c语言中的scanf在java中应该怎么表达,Scanner类。
1 java是面向对象的语言 它没有像C语言中的scanf()函数,但是它的类库中有含有scanf功能的函数 2 java.util包下有Scanner类 Scanner类的功能与scanf类似 3 ...
- C++11笔记<一>
目录: 1.std::share_ptr智能指针: 2.std::tr1::function模板类: 3.stringstream: 4.set/vector/map: 5.static_cast&l ...
- select,poll,epoll比较
除常用文件i/o外,其他常用io模型:io多路复用(select和poll系统调用)信号驱动I/Olinux专有的epoll编程接口异步io(aio),linux在glibc中提供有基于线程的 pos ...
- C 语言学习:班级同学的博客地址列表
这里整理出本班级同学的博客地址.请各位同学之间相互帮助,尽快将博客都建立起来. 编号 学号 姓名 Cnblogs昵称 博客地址 Coding.net 地址 1 160809401 付胤 付胤 http ...
- [MAVEN]一、maven入门之软件的下载及配置到Eclipse中
1.Maven是什么? maven是Apache.org的一个子项目,他通过一个.pom的文件(xml文件)配置可以下载此项目中需要用到的jar包.文档.源码等.Maven提供了命令行的使用方式,我们 ...
- offsetHeight, clientHeight与scrollHeight的区别
在网上搜了一下,结论非常笼统,讲IE从不讲版本,因此自己做了测试并上传结论.以下结论皆是在标准模式下测试通过的,没有测试quirk模式. clientHeight 大部分浏览器对 clientHe ...
- python基于Django框架编译报错“django.core.exceptions.ImproperlyConfigured”的解决办法?
下面是我具体遇到的问题和解决方法: 错误详细信息: django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_IND ...
- Bzoj2850 巧克力王国
Time Limit: 60 Sec Memory Limit: 512 MBSubmit: 505 Solved: 204 Description 巧克力王国里的巧克力都是由牛奶和可可做成的.但 ...
- noi-openjudge[4.7搜索]怀表问题
为啥我觉得这是个DP-.f[i][j][k][l]表示四种零件分别用了i,j,k,l个的方案数.然后发现这样不能保证表一定能接在表链首尾,也不知道状态之间如何转移,那么加一维变成f[i][j][k][ ...
- BZOJ3168: [Heoi2013]钙铁锌硒维生素
设$A^TC=B^T$,这样$C_{ij}$表示$B_j$的线性表出需要$A_i$,那么$B_j$可以替换$A_i$,根据$C=(A^T)^{-1}B^T$求出$C$.要求字典序最小完美匹配,先求任意 ...