洛谷传送门

BZOJ传送门

航空航天局(NASA)研制发射,行经火星、金星、土卫六、木卫二、谷神星、“张衡星”等232323颗太阳系星球,并最终在小行星“杰森星”探寻到了地外生命。宇航员在“杰森星”地表岩层下45.7045.7045.70米位置发现一批珍贵的活体生命样本,并将其带回检测。在带回的活体样本中,最吸引人的当属这些来自外星的千足虫了。这些虫子身躯纤长,身体分为若干节。受到触碰时,会将身体卷曲成圆环形,间隔一段时间后才会复原活动。

有趣的还不止如此。研究人员发现,这些虫子的足并不像地球千足虫成对出现、总共偶数条——它们每节身体下方都有着不定数量的足,但足的总数一定是奇数条!虽然从外观难以区分二者,但通过统计足的数目,科学家们就能根据奇偶性判断出千足虫所属的星球。

作为J国派去NASA的秘密间谍,你希望参加这次研究活动以掌握进一步的情报,而NASA选拔的研究人员都是最优秀的科学家。于是NASA局长Charles Bolden出了一道难题来检测你的实力:

现在你面前摆有1…N1…N1…N编号的NNN只千足虫,你的任务是鉴定每只虫子所属的星球,但不允许亲自去数它们的足。Charles每次会在这N只千足虫中选定若干只放入“昆虫点足机”(the Insect Feet Counter, IFC)中,“点足机”会自动统计出其内所有昆虫足数之和。Charles会将这个和数mod2" role="presentation" style="position: relative;">mod2mod2\mod 2的结果反馈给你,同时告诉你一开始放入机器中的是哪几只虫子。他的这种统计操作总共进行M次,而你应当尽早得出鉴定结果。

假如在第KKK次统计结束后,现有数据就足以确定每只虫子的身份,你就还应将这个K" role="presentation" style="position: relative;">KKK反馈给Charles,此时若K<MK<MK<M,则表明那后M-KM-KM-K次统计并非必须的。

如果根据所有MMM次统计数据还是无法确定每只虫子身份,你也要跟Charles讲明:就目前数据会存在多个解。

输入输出格式

输入格式:

输入文件insect.in第一行是两个正整数N, M。

接下来M" role="presentation" style="position: relative;">MMM行,按顺序给出Charles这M次使用“点足机”的统计结果。每行包含一个01串和一个数字,用一个空格隔开。01串按位依次表示每只虫子是否被放入机器:如果第iii个字符是0则代表编号为i" role="presentation" style="position: relative;">iii的虫子未被放入,1则代表已被放入。后面跟的数字是统计的昆虫足数mod2mod2\mod 2的结果。

由于NASA的实验机器精确无误,保证前后数据不会自相矛盾。即给定数据一定有解。

输出格式:

输出文件insect.out在给定数据存在唯一解时有N+1N+1N+1行,第一行输出一个不超过MMM的正整数K" role="presentation" style="position: relative;">KKK,表明在第KKK次统计结束后就可以确定唯一解;接下来N" role="presentation" style="position: relative;">NNN行依次回答每只千足虫的身份,若是奇数条足则输出?y7M#(火星文),偶数条足输出Earth。如果输入数据存在多解,输出Cannot Determine

所有输出均不含引号,输出时请注意大小写。

输入输出样例

输入样例#1:

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

输出样例#1:

4
Earth
?y7M#
Earth

输入样例#2:

5 7
01100 1
11000 1
10100 0
11100 1
00011 1
00000 0
11111 0

输出样例#2:

Cannot Determine

说明

对于每一个测试点,如果你的输出文件与答案文件完全相同,该测试点得满分;

否则,对于存在唯一解的测试点,如果你正确回答所有千足虫的身份,将得到50%的分数;

其他情况,该测试点得零分。

【数据规模和约定】

对于20%的数据,满足N=M≤20N=M≤20N=M≤20;

对于40%的数据,满足N=M≤500N=M≤500N=M≤500;

对于70%的数据,满足N≤500,M≤1,000N≤500,M≤1,000N≤500,M≤1,000;

对于100%的数据,满足N≤1,000,M≤2,000N≤1,000,M≤2,000N≤1,000,M≤2,000。

解题分析

mod2mod2\mod 2就是在告诉我们这是个xorxorxor方程组, 直接大力高斯消元就好了… 可以用bitsetbitsetbitset优化复杂度。 在swapswapswap一行的时候记录到达的最大值。

代码如下:

#include <cstdio>
#include <cstring>
#include <bitset>
#include <algorithm>
#include <cmath>
#include <cctype>
#include <cstdlib>
#include <iostream>
#define R register
#define IN inline
#define W while
#define gc getchar()
#define MX 2005
std::bitset <1005> mat[MX];
char buf[MX];
int num, req, bd, mx;
bool Gauss()
{R int i, j, k;for (i = 1; i <= num; ++i){for (j = i; j <= req; ++j) if(mat[j][i]) {mx = std::max(mx, j); std::swap(mat[i], mat[j]); break;}if(!mat[i][i]) return false;//找不到消元对象, 说明是个自由元for (j = 1; j <= req; ++j)if((i ^ j) && mat[j][i]) mat[j] ^= mat[i];}return true;
}
int main(void)
{int bf;scanf("%d%d", &num, &req); bd = num + 1;for (R int i = 1; i <= req; ++i){scanf("%s%d", buf + 1, &bf);for (R int j = 1; j <= num; ++j) mat[i][j] = buf[j] - '0';mat[i][bd] = bf;}if(Gauss()) {printf("%d\n", mx); for (R int i = 1; i <= num; ++i) puts(mat[i][bd] ? "?y7M#" : "Earth");}else puts("Cannot Determine");
}

[Luogu P2447] [BZOJ 1923] [SDOI2010]外星千足虫相关推荐

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

    1923: [Sdoi2010]外星千足虫 Time Limit: 10 Sec  Memory Limit: 64 MB Submit: 921  Solved: 592 [Submit][Stat ...

  2. P2447 [SDOI2010]外星千足虫

    P2447 [SDOI2010]外星千足虫 题意: 有n个未知数 给你一个m行n+1列的式子,对于每行,1到n列为这个n个未知数的系数,第n+1列为该行式子的和mod2,问n个未知数是否有唯一解,并输 ...

  3. 线性代数五之高斯消元——[SDOI2010]外星千足虫,[HNOI2013]游走,[HNOI2011]XOR和路径,[hdu 4035]Maze

    多类型高斯消元杂题 [SDOI2010]外星千足虫 description solution code [HNOI2013]游走 description solution code [HNOI2011 ...

  4. [SDOI2010]外星千足虫 题解 高斯消元+bitset简介

    高斯消元 + bitset 简介: 高斯消元其实就是以加减消元为核心求唯一解.这道题还是比较裸的,可以快速判断出来.我们将每一只虫子看作一个未知数,这样根据它给出的 m 组方程我们可以高斯消元得出每一 ...

  5. bzoj1923 [Sdoi2010]外星千足虫 压位+高斯消元

    这个题手动压位非常麻烦,因为对于同一块,后加的数比先加的数小,所以判断最后一位的时候需要定位到最后一块最小的数,而且在找元的时候还不能找到这个位置 注意块的总数每个是30个不要存错, 码: #incl ...

  6. [SDOI 2010]外星千足虫

    Description 题库链接 给出 \(m\) 个 \(n\) 元的 \(0,1\) 方程,即系数非 \(0\) 即 \(1\) ,方程的结果为奇偶性. \(1\leq n\leq 1000,1\ ...

  7. 【BZOJ1923】外星千足虫,高斯消元解xor方程组

    Time:2016.08.29 Author:xiaoyimi 转载注明出处谢谢 传送门 思路: 原本以为是高斯消元解取模方程,后来发现这题意不就和异或方程一样吗 [异或(XOR)运算由于与" ...

  8. Luogu P1198 BZOJ 1012 最大数 (线段树)

    Luogu P1198 BZOJ 1012 最大数 (线段树) 手动博客搬家: 本文发表于20170821 14:32:05, 原地址https://blog.csdn.net/suncongbo/a ...

  9. 【BZOJ2251】[2010Beijing Wc]外星联络 后缀数组

    [BZOJ2251][2010Beijing Wc]外星联络 Description 小 P 在看过电影<超时空接触>(Contact)之后被深深的打动,决心致力于寻 找外星人的事业.于是 ...

最新文章

  1. 【学习笔记】16、常用内置函数(Built-in Functions)
  2. Struts 2常见应用
  3. k-means算法原理及实战
  4. 95-290-040-源码-内存管理-MemorySegment
  5. 每天一个linux命令:du 与 df
  6. 把C#对象转换为json字符串
  7. 字符串常量池、堆、栈
  8. matlab转置的问题
  9. html背景位置渐变,CSS3(背景和渐变)
  10. 华为+android+root权限获取root,华为手机root权限获取方法
  11. elementui 中的 el-descriptions 文字居中显示
  12. java程序 联机方法_Java实现Tank大战联机版
  13. configure error /bin/bash /config sub failed
  14. gets()和getchar()的用法
  15. IAR for ARM系列教程(三)_菜单(Ⅰ)
  16. 活体检测论文笔记2——Deep Spatial Gradient and Temporal Depth Learning for Face Anti-spoofing
  17. 【转】PHP PDO 学习笔记
  18. Netapp FAS80xx C-mode存储规划
  19. 真Unity3d_人物摇杆操作(2022年重写)
  20. 第七章-复用类-继承语法-1

热门文章

  1. orangepi——学习python02
  2. 一个研究生毕业后的职业规划 -----我今年39岁了,25岁研究生毕业,工作14年,回头看看,应该说走了不少的弯路,有一些经验和教训。
  3. Mysql进阶四:常见函数-日期函数
  4. 计算机组成原理、微机接口及应用综合实验台
  5. 磁盘阵列RAID技术大讲堂
  6. 公司网站被黑客入侵,怎么应对?
  7. 多个输入框失焦事件触发异常问题解决
  8. C++11新特性:移动构造函数和移动赋值
  9. Whale 帷幄:用户旅程的「情绪算法」
  10. 强制卸载软件测试工资,软件安装卸载测试