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. ogg的安装配置 配置双向同步(含DDL)

    第一部分 先配置单向同步(含DDL) 一 源端安装GoldenGate 创建用户 创建目录 mkdir -p /opt/ogg chmod -R 777 /opt/ogg chown -R oracl ...

  2. PostFix支持SMTP认证

    安装cyrus-sasl yum -y install cyrus-sasl* 启动服务,开机启动 service saslauthd start chkconfig saslauthd on 配置p ...

  3. Python Road

    引子 雁离群兮不知所归,路遥远兮吾将何往   Python Road[第一篇]:Python简介 Python Road[第二篇]:Python基本数据类型 Python Road[第三篇]:Pyth ...

  4. hdu1257最少拦截系统(暴力)

    最少拦截系统 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

  5. selenium(Java)WebDriverWait等待机制

    //标题是不是“百度一下,你就知道” 18 new WebDriverWait(driver,5).until(ExpectedConditions.titleIs("百度一下,你就知道&q ...

  6. CentOS 7.2 安装zabbix 3.4

    一.zabbix版本选择及部署环境说明 1.zabbix版本选择 zabbix官网地址:www.zabbix.com zabbix每半年发布一个长期支持版,目前长期支持版有2.0.3.0等,所以选择z ...

  7. Unity与服务区交互数据

    Unity与服务区交互数据 Unity可能在用的时候使用到登陆等需要与服务器交互数据.今天尝试使用了WWW类和WWWForm类来实现Get请求与Post请求. 1.WWW Unity圣典解释: WWW ...

  8. 了解Python控制流语句——while 语句

    while 语句 Python 中 while 语句能够让你在条件为真的前提下重复执行某块语句. while 语句是 循环(Looping) 语句的一种.while 语句同样可以拥有 else 子句作 ...

  9. [精通Python自然语言处理] Ch1 - 将句子切分为单词

    实验对比了一下三种切分方式: 1,2 : nltk.word_tokenize :  分离缩略词,(“Don't” =>'Do', "n't") 表句子切分的“,” &quo ...

  10. 机器学习(四)正则化与过拟合问题 Regularization / The Problem of Overfitting

    文章内容均来自斯坦福大学的Andrew Ng教授讲解的Machine Learning课程,本文是针对该课程的个人学习笔记,如有疏漏,请以原课程所讲述内容为准.感谢博主Rachel Zhang 的个人 ...