1923: [Sdoi2010]外星千足虫

Time Limit: 10 Sec  Memory Limit: 64 MB
Submit: 1254  Solved: 799
[Submit][Status][Discuss]

Description

Input

第一行是两个正整数 N, M。
接下来 M行,按顺序给出 Charles 这M次使用“点足机”的统计结果。每行
包含一个“01”串和一个数字,用一个空格隔开。“01”串按位依次表示每只虫
子是否被放入机器:如果第 i 个字符是“0”则代表编号为 i 的虫子未被放入,“1”
则代表已被放入。后面跟的数字是统计的昆虫足数 mod 2 的结果。
由于 NASA的实验机器精确无误,保证前后数据不会自相矛盾。即给定数据
一定有解。

Output

在给定数据存在唯一解时有 N+1行,第一行输出一个不
超过M的正整数K,表明在第K 次统计结束后就可以确定唯一解;接下来 N 行
依次回答每只千足虫的身份,若是奇数条足则输出“?y7M#”(火星文),偶数
条足输出“Earth”。如果输入数据存在多解,输出“Cannot Determine”。
所有输出均不含引号,输出时请注意大小写。

Sample Input

3 5
011 1
110 1
101 0
111 1
010 1

Sample Output

4
Earth
?y7M#
Earth

HINT

对于 20%的数据,满足 N=M≤20;
对于 40%的数据,满足 N=M≤500;
对于 70%的数据,满足 N≤500,M≤1,000;
对于 100%的数据,满足 N≤1,000,M≤2,000。

==========================================================
请不要提交!

#include <bits/stdc++.h>

#define MAXN 1005
#define MAXM 2005 using namespace std; int n,m;
char str[MAXN];
int x[MAXN];//结果
int rl;
int a[MAXM][MAXN];//高斯消元矩阵
int ans; int gauss(int equ,int var){
int i,j,k;
int max_r;
int col;
for(int i=;i<=var;i++){
x[i]=;
}
col=;
for(k = ;k < equ && col < var;k++,col++) { //k是行,col是列
max_r=k;
while(a[max_r][col]==&&max_r<equ) max_r++;
if(max_r==equ)
return -;
swap(a[k],a[max_r]);
ans=max(ans,max_r+);
for(i=k+;i<equ;i++){
if(a[i][col]!=){
for(j=;j<var+;j++){
a[i][j] = a[i][j]^a[k][j];
}
}
}
}
// 一个解
for (i = var - ; i >= ; i--){
x[i]=a[i][var];
for (j = i + ; j < var; j++){
x[i]^=(a[i][j]&&x[j]);
}
}
return ;
} inline void init(){
memset(a,,sizeof a);
ans=;
} int main(){
//freopen("in.txt","r",stdin);
init();
scanf("%d%d",&n,&m);
for(int i=;i<m;i++){
scanf("%s%d",str,&rl);
for(int j=;j<n;j++){
a[i][j]=str[j]-'';
}
a[i][n]=rl;
}
int res=gauss(m,n);
if(res==-){
puts("Cannot Determine");
}else{
printf("%d\n",ans);
for(int i=;i<n;i++){
if(x[i]==)
puts("Earth");
else
puts("?y7M#");
}
}
return ;
}

1923: [Sdoi2010]外星千足虫的更多相关文章

  1. bzoj 1923 [Sdoi2010]外星千足虫(高斯消元+bitset)

    1923: [Sdoi2010]外星千足虫 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 634  Solved: 397[Submit][Status ...

  2. BZOJ 1923: [Sdoi2010]外星千足虫 [高斯消元XOR]

    1923: [Sdoi2010]外星千足虫 对于 100%的数据,满足 N≤1,000,M≤2,000. 裸高斯消元解异或方程组 给定方程顺序要求用从上到下最少的方程,那么找主元时记录一下最远找到哪个 ...

  3. 【BZOJ 1923】1923: [Sdoi2010]外星千足虫 (高斯消元异或 | BITSET用法)

    1923: [Sdoi2010]外星千足虫 Description Input 第一行是两个正整数 N, M. 接下来 M行,按顺序给出 Charles 这M次使用“点足机”的统计结果.每行 包含一个 ...

  4. BZOJ 1923: [Sdoi2010]外星千足虫

    Description 给出几个异或方程组求解,\(n \leqslant 2000\) Sol 高斯消元. 直接消元就行,遇到自由元就直接输出,同时记录一下用到的最高行数. 复杂度不科学就可以用 b ...

  5. BZOJ 1923 SDOI2010 外星千足虫 异或方程组+bitset

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1923 懒得贴题目了......这就是解一个异或方程组的裸题...... YY了一下异或方程 ...

  6. BZOJ.1923.[SDOI2010]外星千足虫(高斯消元 异或方程组 bitset)

    题目链接 m个方程,n个未知量,求解异或方程组. 复杂度比较高,需要借助bitset压位. 感觉自己以前写的(异或)高斯消元是假的..而且黄学长的写法都不需要回代. //1100kb 324ms #i ...

  7. 【BZOJ】1923 [Sdoi2010]外星千足虫(高斯消元)

    题目 传送门:QWQ 分析 高斯消元解异或方程组,和解普通方程组差不多. 范围有点大,要套一个bitset. 代码 #include <bits/stdc++.h> using names ...

  8. bzoj 1923: [Sdoi2010]外星千足虫【高斯消元】

    裸的异或高斯消元 #include<iostream> #include<cstdio> using namespace std; const int N=2005; int ...

  9. BZOJ 1923: [Sdoi2010]外星千足虫 高斯消元+bitset

    高斯消元求解异或方程组,可以多学一下 $bitset$ 在位运算中的各种神奇操作. #include <cstdio> #include <bitset> #define N ...

随机推荐

  1. 宁波Uber优步司机奖励政策(1月11日~1月17日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  2. 为啥学蛇和python10年后的变化

    作者:cheng rianley链接:https://www.zhihu.com/question/22112542/answer/166053516来源:知乎著作权归作者所有.商业转载请联系作者获得 ...

  3. LSD_SLAM(一)运行数据集

    虽然按照作者的推荐使用的是OpenCV 2.4.8,但编译依然通不过,一直有错误: 因为lsd_slam是2014年出的,用的ros编译系统不是catkin而是rosbuild,有一些不理解的地方. ...

  4. 【quick-cocos2d-lua】 基本类及用法

    1.cc.Director(导演类) 获得导演类实例:local  director = cc.Director : getInstance() 其中 cc 是Cocos2d-x Lua 类的命名空间 ...

  5. vue中如何实现pdf文件预览?

    今天产品提出一个优化的需求,就是之前我们做的图片展示就是一个img标签搞定,由于我们做的是海外后台管理系统,那边的人上传的文件时pdf格式,vue本事是不支持这种格式文件展示的,于是就google搜索 ...

  6. CSP201503-2:数字排序

    引言:CSP(http://www.cspro.org/lead/application/ccf/login.jsp)是由中国计算机学会(CCF)发起的"计算机职业资格认证"考试, ...

  7. [Clr via C#读书笔记]Cp18 定制Attribute

    Cp18 定制Attribute 意义 利用Attribute,可以声明性的给自己的代码结构创建注解,从而实现一些特殊的功能:最终在元数据中生成,这种可扩展的元数据信息可以在运行时的时候查询,从而动态 ...

  8. 日历(Calendar)模块

    #usr/bin/python3 #! -*-conding : utf-8 -*- #2018.3.14 """ 日历(Calendar)模块 此模块的函数都是日历相关 ...

  9. adb 在windows7中的使用

    我的系统环境是win7 x64 首先放上资源链接:https://pan.baidu.com/s/1eTV5qX8 密码:2ejw 第一步: 配置环境变量,将adb.exe的路径添加到PATH里面去: ...

  10. 技本功丨知否知否,Redux源码竟如此意味深长(下集)

    上集回顾 Redux是如何使用的?首先再来回顾一下这个使用demo(谁让这段代码完整地展示了redux的使用) 如果有小伙伴对这段代码不是很理解的话,建议先去学习Redux的使用再来看这篇源码,这样更 ...