bzoj 1923: [Sdoi2010]外星千足虫
来源:互联网 发布:金融网络销售的技巧 编辑:程序博客网 时间:2024/04/29 22:55
题意
就是有很多个数,他们都是0或1
然后告诉你,我现在选择了那些数来进行异或运算,结果是什么
要你求出这些数都是什么
题解
很裸的一个异或方程组嘛,用高斯消元消一消就可以了。。
然后发现n似乎很大。。
然后我们可以用bieset来水一下。。
就可以过了。。
过程和高斯消元基本上是一样的
CODE:
#include<cstdio>#include<algorithm>#include<iostream>#include<cstring>#include<bitset>using namespace std;const int N=1005;int n,m;bitset<N> a[N<<1];char ss[N];int ans=0;int Ans[N];bool work (){ for (int u=1;u<=n;u++) { int i; for (i=u;i<=m&&a[i][u]==0;i++); if (i==m+1) return false; swap(a[u],a[i]); ans=max(ans,i); for (i=u+1;i<=m;i++) if (a[i][u]==1) a[i]^=a[u]; } for (int u=n;u>=1;u--) { for (int i=u+1;i<=n;i++) if (a[u][i]==1) a[u][n+1]=a[u][n+1]^(bool)Ans[i]; Ans[u]=a[u][n+1]; } return true;}int main(){ scanf("%d%d",&n,&m); for (int u=1;u<=m;u++) { scanf("%s",ss+1); for (int i=1;i<=n;i++) a[u][i]=ss[i]-'0'; scanf("%s",ss); a[u][n+1]=(ss[0]-'0'); } if (!work()) {printf("Cannot Determine\n");return 0;} printf("%d\n",ans); for (int u=1;u<=n;u++) { if (Ans[u]==0) printf("Earth\n"); else printf("?y7M#\n"); } return 0;}
阅读全文
0 1
- BZOJ-1923-外星千足虫-SDOI2010
- BZOJ 1923: [Sdoi2010]外星千足虫
- BZOJ 1923 [Sdoi2010] 外星千足虫
- bzoj 1923: [Sdoi2010]外星千足虫
- bzoj 1923: [Sdoi2010]外星千足虫
- bzoj 1923: [Sdoi2010]外星千足虫 (高斯消元)
- 【bzoj 1923】[Sdoi2010]外星千足虫(高斯消元)
- 【BZOJ 1923】 [Sdoi2010]外星千足虫 高斯消元
- bzoj 1923: [Sdoi2010]外星千足虫 高斯消元
- 1923: [Sdoi2010]外星千足虫
- Bzoj 1923: [Sdoi2010]外星千足虫(bitset优化高斯消元)
- [BZOJ]1923: [Sdoi2010]外星千足虫 高斯消元解xor方程组
- 【BZOJ】【P1923】【Sdoi2010】【外星千足虫】【题解】【高斯消元】
- [Sdoi2010]外星千足虫
- bzoj1923: [Sdoi2010]外星千足虫
- 【bzoj1923】[Sdoi2010]外星千足虫
- BZOJ1923: [Sdoi2010]外星千足虫
- bzoj1923 [Sdoi2010]外星千足虫
- kafka概述
- C++bitset学习小记
- C++进阶—>Win32 多线程的创建方法和基本使用
- “程序”,你好,请多指教!
- 典型数据库架构设计与实践
- bzoj 1923: [Sdoi2010]外星千足虫
- Vue全家桶实现一个购物Web App
- CentOS6 编译安装Mysql5.6.26
- java web ssm框架 简单例子
- Linux后台运行程序
- P1339 [USACO09OCT]热浪Heat Wave
- grub kernel.img makefile源码分析
- 設置Linux保留物理內存arm_memblock_init並使用 (1)
- 第四次实训博客