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 ;
}

最新文章

  1. 利用 async &amp; await 的异步编程
  2. 用VBS实现公司自动打卡
  3. java -cp
  4. Visual Studio Code 添加设置代码段(snippet)
  5. 多线程编程4 - NSOperationQueue
  6. 机器学习:logistic回归
  7. UITabbar的简单操作和实际应用
  8. css 所有选择器
  9. [设计模式]观察者模式1(用JDK提供的API)
  10. POJ3155 Hard Life
  11. Android学习路线(二十四)ActionBar Fragment运用最佳实践
  12. [js高手之路] es6系列教程 - Map详解以及常用api
  13. Android编程示例:创建机场计划模拟器应用程序
  14. JS应用猜数游戏
  15. ARC 066D Xor Sum AtCoder - 2272 (打表找规律)
  16. jenkins 结合 jmeter 的报告篇
  17. CVE-2019-8341 Jinja2 RCE漏洞学习
  18. mxnet 查看 Sym shape
  19. windows下尝试编写node模块
  20. Flink 中的kafka何时commit?

热门文章

  1. python的bif介绍
  2. P3379 【模板】最近公共祖先(LCA)
  3. Oracle锁表处理
  4. ReadyAPI创建功能测试的方法
  5. CentOS安装nmon
  6. js for循环实例
  7. 手机端网页返回顶部js代码
  8. 创新手机游戏《3L》开发点滴(1)——道具、物品、装备表设计
  9. http://www.yiibai.com/javalang/string_endswith.html
  10. 【树莓派 Raspberry-Pi 】系统安装及一些必要的配置