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 ...
随机推荐
- Intelij IDEA解决Dependency无法更新问题
在使用Intelij IDEA的时候,发现核心的组件没有被更新,于是发现了这篇文章可以解决这个问题: Force Intellij IDEA to reread all maven dependenc ...
- ReactNative新手学习之路03真机调试
React Native新手入门03真机调试(iOS) 从设备访问开发服务器 在启用开发服务器的情况下,你可以快速的迭代修改应用,然后在设备上查看结果.这样做的前提是你的电脑和设备必须在同一个wifi ...
- RPM命令用法
安装一个包 rpm –ivh 升级一个包 rpm -Uvh 移走一个包 rpm -e 4.校验rpm包 rpm -V < rpm package name> 5.查询一个包是否被安装 rp ...
- Binding
Binding基础 绑定某个对象的属性值到控制上,写法如下: public class Order : INotifyPropertyChanged//只要实现此接口 { public event ...
- 什么是Jedis?
Jedis 是 Redis 官方首选的 Java 客户端开发包. 实例方法: 1 import redis.clients.jedis.* 1 2 3 Jedis jedis = new Jedis( ...
- canvas弹动效果
弹动效果,用物体与目标的距离乘上系数再累加至速度上,让物体呈加速度运动,再让速度乘与摩擦力系数,让物体最终停止运动 代码如下所示 var canvas = document.getElementByI ...
- java中Arraylist复制方法
方法一: ArrayList<Integer> mycopy=new ArrayList<Integer>(); mycopy=(ArrayList<Integer> ...
- java-json日期字符串转换
String valueStr = value.toString(); if(StringUtils.isBlank(valueStr) || "null".equals(valu ...
- Javascript和HTML:
JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标 ...
- 10月25日上午PHP继承多态
概念:子类可以继承父类的一切 方法重写:在子类里面对父类的方法进行重写,实现自己独特的功能.特点:单继承:一个子类只能有一个父类,一个父类可以派生出多个子类.override重写(子类对父类的重写) ...