poj1222(高斯消元法解异或方程组+开关问题)
题目链接:https://vjudge.net/problem/POJ-1222
题意:给定一个5×6的01矩阵,改变一个点的状态时它上下左右包括它自己的状态都会翻转,因为翻转2次等价与没有翻转,那么每个点要么不翻转,要么翻转一次,求最终要怎样翻转可以使得矩阵全0。
思路:
做法1(枚举): 因为数据小,可以枚举第一行的所有可能,共1<<6种,之后的每一行都根据上一行决定,然后通过判断最后一行是否满足条件来判断这种方案是否可行。
做法2(高斯消元法): 为了说的清楚,现在假定矩阵为2×3,比如为
,现在要达到的目标状态是:
现在要求6个灯的状态,相当于6个变量。另外有6个方程,分别表示6个点最终的状态。
比如,对于第0个灯,能影响到它的就是第0、1、3盏灯,因此它的方程是: (1*x0) ^ (1*x1) ^ (0*x2) ^ (1*x3) ^ (0*x4) ^ (0*x5) =0,(式子右边的0表示第0盏灯最开始的状态)。
同理第1盏灯的方程即为:(1*x0) ^ (1*x1) ^ (1*x2) ^ (0*x3) ^ (1*x4) ^ (0*x5) =1。
因此可以列出6个方程,然后用高斯消元法来求解,异或方程组的处理和普通线性方程组是一样的。
对于题目就是5×6=30个方程,30个变量分别表示30盏灯的状态。
AC代码:
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<cstdlib>
using namespace std; const int maxn=;
int T,cas,a[maxn][maxn],ans[maxn]; void init(){
memset(a,,sizeof(a));
memset(ans,,sizeof(ans));
for(int i=;i<;++i){
for(int j=;j<;++j){
int t=i*+j;
a[t][t]=;
if(i>) a[t][t-]=;
if(i<) a[t][t+]=;
if(j>) a[t][t-]=;
if(j<) a[t][t+]=;
}
}
} void Gauss(int equ,int var){
int r=,c=;
for(;r<equ&&c<var;++r,++c){
int Maxr=r;
for(int i=r+;i<equ;++i)
if(abs(a[i][c])>abs(a[Maxr][c]))
Maxr=i;
if(a[Maxr][c]==){
--r;
continue;
}
if(Maxr!=r){
for(int i=c;i<=var;++i)
swap(a[r][i],a[Maxr][i]);
}
for(int i=r+;i<equ;++i){
if(a[i][c]==) continue;
for(int j=c;j<=var;++j)
a[i][j]^=a[r][j];
}
}
for(int i=var-;i>=;--i){
ans[i]=a[i][var];
for(int j=i+;j<equ;++j)
ans[i]^=(a[i][j]&ans[j]);
}
} int main(){
scanf("%d",&T);
while(T--){
init();
for(int i=;i<;++i)
scanf("%d",&a[i][]);
Gauss(,);
printf("PUZZLE #%d\n",++cas);
for(int i=;i<;++i){
for(int j=;j<;++j){
printf("%d",ans[i*+j]);
if(j!=) printf(" ");
}
printf("\n");
}
}
return ;
}
poj1222(高斯消元法解异或方程组+开关问题)的更多相关文章
- bzoj千题计划105:bzoj3503: [Cqoi2014]和谐矩阵(高斯消元法解异或方程组)
http://www.lydsy.com/JudgeOnline/problem.php?id=3503 b[i][j] 表示i对j是否有影响 高斯消元解异或方程组 bitset优化 #include ...
- fzu1704(高斯消元法解异或方程组+高精度输出)
题目链接:https://vjudge.net/problem/FZU-1704 题意:经典开关问题,求使得灯全0的方案数. 思路:题目保证至少存在一种方案,即方程组一定有解,那么套上高斯消元法的板子 ...
- 【BZOJ】2466: [中山市选2009]树 高斯消元解异或方程组
[题意]给定一棵树的灯,按一次x改变与x距离<=1的点的状态,求全0到全1的最少次数.n<=100. [算法]高斯消元解异或方程组 [题解]设f[i]=0/1表示是否按第i个点的按钮,根据 ...
- bzoj千题计划187:bzoj1770: [Usaco2009 Nov]lights 燈 (高斯消元解异或方程组+枚举自由元)
http://www.lydsy.com/JudgeOnline/problem.php?id=1770 a[i][j] 表示i对j有影响 高斯消元解异或方程组 然后dfs枚举自由元确定最优解 #in ...
- Bzoj3517 翻硬币题解 解异或方程组
3517: 翻硬币 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 281 Solved: 211[Submit][Status][Discuss] D ...
- 高斯消元法求解异或方程组: cojs.tk 539.//BZOJ 1770 牛棚的灯
高斯消元求解异或方程组: 比较不错的一篇文章:http://blog.sina.com.cn/s/blog_51cea4040100g7hl.html cojs.tk 539. 牛棚的灯 ★★☆ ...
- POJ 1222 EXTENDED LIGHTS OUT(高斯消元解异或方程组)
EXTENDED LIGHTS OUT Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 10835 Accepted: 6 ...
- POJ1222 高斯消元法解抑或方程
第一次学怎么用高斯消元法解抑或方程组,思想其实很简单,方法可以看下面的链接:http://blog.csdn.net/zhuichao001/article/details/5440843 有了这种思 ...
- bzoj千题计划188:bzoj1923: [Sdoi2010]外星千足虫 (高斯—若尔当消元法解异或方程组)
http://www.lydsy.com/JudgeOnline/problem.php?id=1923 #include<cstdio> #include<cstring> ...
随机推荐
- java试题复盘——11月13日
上: 10. AccessViolationException异常触发后,下列程序的输出结果为( A ) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 AccessViol ...
- Feeding Chicken
D - Feeding Chicken 从左上角开始,往右下角开始遍历,但是遍历的时候需要注意一点,就是遍历的时候需要连起来,就比如第一行从左往右进行遍历,但是第二行不能从左往右了,因为这样就分开了, ...
- 百度地图API根据地名获取经纬度
运用了Geocoding API,它包括地址解析和逆地址解析功能. 地址解析是指,由详细到街道的结构化地址得到百度经纬度信息,且支持名胜古迹.标志性建筑名称直接解析返回百度经纬度.例如:“北京市海淀区 ...
- mysql 运行中 偶尔 报错 2002 也许是这个问题,内存不足导致的
配置都是正常,最终发现内存使用率高达90%多,加配置后解决问题(升级服务器配置) 加之前是2核4g ,升级配置后 4核8g
- 第二次博客作业: 函数+进制转换器v1.0beta
一:运行截图 二:介绍函数 1, int panduan1(int n,char a[],int count,int sign)//判断用户是否输入了除数字和a-f范围外的字符 { int i; ; ...
- G-LAB四月份作业-数据可视化问题探讨
G-LAB四月份作业-数据可视化问题探讨 引子: 数据平台项目建设正在按照公司的计划开展执行中,作为平台建设项目参与者之一,感觉目前我们现有的MIS报表平台数据也不可谓不丰富,但是不论从提供给用户的数 ...
- MYSQL的两种存储引擎区别
Innodb引擎 Innodb引擎提供了对数据库ACID事务的支持,并且实现了SQL标准的四种隔离级别.该引擎还提供了行级锁和外键约束,它的设计目标是处理大容量数据库系统,它本身其实就是基于MySQL ...
- jinja2-过滤器
过滤器 过滤器是个函数,参数就是管道(pipe)前面那个变量.比如 123|myfilter,123就是myFilter的参数.如果需要两个参数,则在myFilter后面加(),即123|myFil ...
- PyTricks-json dumps优雅的输出字典
import json my_mapping = {'a': 23, 'b': 42, 'c': 0xc0ffee} print(json.dumps(my_mapping, indent=4, so ...
- maven的pom报错web.xml is missing and <failOnMissingWebXml> is set to true
错误信息:web.xml is missing and <failOnMissingWebXml> is set to true 解决办法:https://blog.csdn.net/si ...