SGU 260.Puzzle (异或高斯消元)
题意:
有n(<200)个格子,只有黑白两种颜色.可以通过操作一个格子改变它和其它一些格子的颜色。给出改变的关系和n个格子的初始颜色,输出一种操作方案使所有格子的颜色相同。
Solution:
很显然的高斯消元。
这里采用了类似SGU275的方法做。
/*
解异或方程组
*/
#include <iostream>
#include <bitset>
#include <cstring>
using namespace std;
const int N = ;
bitset<N> a[N], mask[N];
int base[N];
int Gauss ( int n )
{
for ( int i = ; i <= n; ++i ) {
for ( int j = ; j <= n; ++j ) {
if ( a[i][j] ) {
if ( !~base[j] ) {
mask[i][i] = ;
base[j] = i;
break;
}
a[i] ^= a[base[j]];
mask[i] ^= mask[base[j]];
}
}
}
} int n, m;
int main()
{
ios::sync_with_stdio ( );
cin >> n;
for ( int i = , k; i <= n; ++i ) {
cin >> k;
for ( int j = , t; j <= k; ++j ) {
cin >> t;
a[i][t] = ;
}
}
memset ( base, -, sizeof base );
Gauss ( n );
for ( int i = , k; i <= n; ++i ) {
cin >> k;
a[n + ][i] = k;
a[n + ][i] = k ^ ;
}
int k;
for ( k = ; k <= n; ++k ) {
if ( a[n + ][k] == ) {
if ( !~base[k] ) {
break;
}
a[n + ] ^= a[base[k]];
mask[n + ] ^= mask[base[k]];
}
}
if ( k > n ) {
cout << mask[n + ].count() << endl;
for ( int i = ; i <= n; ++i ) {
if ( mask[n + ][i] )
cout << i << " ";
}
} else {
for ( k = ; k <= n; ++k ) {
if ( a[n + ][k] ) {
if ( !~base[k] ) {
break;
}
a[n + ] ^= a[base[k]];
mask[n + ] ^= mask[base[k]];
}
}
if ( k > n ) {
cout << mask[n + ].count() << endl;
for ( int i = ; i <= n; ++i ) {
if ( mask[n + ][i] )
cout << i << " ";
}
} else {
cout << - << endl;
}
}
}
SGU 260.Puzzle (异或高斯消元)的更多相关文章
- POJ 1222【异或高斯消元|二进制状态枚举】
题目链接:[http://poj.org/problem?id=1222] 题意:Light Out,给出一个5 * 6的0,1矩阵,0表示灯熄灭,反之为灯亮.输出一种方案,使得所有的等都被熄灭. 题 ...
- SGU 200 Cracking RSA (高斯消元)
转载请注明出处,谢谢http://blog.csdn.net/ACM_cxlove?viewmode=contents by---cxlove 题意:给出m个整理,因子全部为前t个素数.问有多少 ...
- Luogu3164 CQOI2014 和谐矩阵 异或高斯消元
传送门 题意:给出$N,M$,试构造一个$N \times M$的非全$0$矩阵,其中所有格子都满足:它和它上下左右四个格子的权值之和为偶数.$N , M \leq 40$ 可以依据题目中的条件列出有 ...
- poj1830开关问题——异或高斯消元
题目:http://poj.org/problem?id=1830 根据题意,构造出n元方程组: a(1,1)x1 ^ a(1,2)x2 ^ a(1,3)x3 ... a(1,n)xn = st1 ^ ...
- POJ1830(异或高斯消元)
对于某个开关,都有n个选项可能影响它的结果,如果会影响,则系数为1,否则系数为0:最后得到自由元的个数,自由元可选0也可选1. #include <cstdio> #include < ...
- SGU 200. Cracking RSA (高斯消元求自由变元个数)
题目链接:http://acm.sgu.ru/problem.php?contest=0&problem=200 200. Cracking RSA time limit per test: ...
- SGU 275 To xor or not to xor(高斯消元)
题意: 从n个数中选若干个数,使它们的异或和最大.n<=100 Solution 经典的异或高斯消元. //O(60*n) #include <iostream> using nam ...
- BZOJ.1923.[SDOI2010]外星千足虫(高斯消元 异或方程组 bitset)
题目链接 m个方程,n个未知量,求解异或方程组. 复杂度比较高,需要借助bitset压位. 感觉自己以前写的(异或)高斯消元是假的..而且黄学长的写法都不需要回代. //1100kb 324ms #i ...
- 高斯消元 & 线性基【学习笔记】
高斯消元 & 线性基 本来说不写了,但还是写点吧 [update 2017-02-18]现在发现真的有好多需要思考的地方,网上很多代码感觉都是错误的,虽然题目通过了 [update 2017- ...
随机推荐
- glusterfs repo
Installing Gluster For RPM based distributions, if you will be using InfiniBand, add the glusterfs R ...
- rand(7) 到rand(10)
说有一个rand()函数,等概率生成1-7的随机数. 利用这个函数,构造一个能生成1-10的随机数的函数; //意思大家都懂就好,没说清的就按照想象的走 我想只要输出的10个数概率相同就好,从宏观上看 ...
- 【Mysql学习笔记】浅析mysql的binlog
最近读一份关于“数据库事务故障恢复"的技术资料,发现对mysql的binlog的认识不够清楚,查阅mysql reference manual有所收获,作为笔记,记录于此. 1. What' ...
- Centos环境下Tomcat启动缓慢
最近项目上线部署的时候,发现一个问题.Tomcat在启动过程中耗费了很长的时间.查看日志,发现耗时最长的地方是:INFO [localhost-startStop-1] org.apache.cata ...
- JNI 技术与 Android 应用
1. 什么是 JNI JNI是Java Native Interface的缩写.从Java 1.1开始,JNI标准成为java平台的一部分,它允许Java和其他语言进行交互.JNI一开始为C和C++而 ...
- linux编译安装LAMP
Linux安装Apache+MySQL+PHP 安装部分依赖 安装apr(可选) # tar -xf apr-1.5.0.tar.bz2 # cd apr-1.5.0 #./configure --p ...
- Override ListView getAdapter造成的后果
近期工作中,发现了一个bug,是和ListView Adapter有关的.产生了FC,描写叙述信息大约是 "The content of the adapter has changed bu ...
- 关于模拟器不能运行项目问题:Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE
我有一个习惯,当做完某一项功能时就想试试运行效果.所以一个程序完成前会运行无数遍.但是有时会出现不能运行的问题,并且这个问题不是来自项目的错误,显示器显示如下错误: [2013-08-31 08:45 ...
- Centos6下yum安装MariaDB5.5(转)
原文地址:http://www.cnblogs.com/kgdxpr/p/3209009.html vi /etc/yum.repos.d/MariaDB.repo 加入下面内容 [mariabd]n ...
- INSTALL_FAILED_VERSION_DOWNGRADE报错
error: INSTALL_FAILED_VERSION_DOWNGRADE 原因:模拟器或者实际的device中已经安装了同名的app,且本次的版本并不高 解决:在模拟器中卸载此同名应用,之后再运 ...