【poj1222-又一道开关问题】高斯消元求解异或方程组
题意:给出一个5*6的图,每个灯泡有一个初始状态,1表示亮,0表示灭。每对一个灯泡操作时,会影响周围的灯泡改变亮灭,问如何操作可以使得所有灯泡都关掉。
题解:
这题和上一题几乎完全一样。。就是要输出解。。
然后我发现我回代的过程错了TAT 已修改上一题代码和模版
因为回代的过程合!并!了!
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
using namespace std; const int N=;
int a[N][N],ans[N];
int dx[]={,,,-,};
int dy[]={,,,,-};
int idx(int x,int y){return (x-)*+y;} void output()
{
for(int i=;i<=;i++)
{
for(int j=;j<=;j++)
printf("%d ",a[i][j]);
printf("\n");
}
printf("\n");
} void gauss()
{
int i,j,k,l;
memset(ans,,sizeof(ans));
for(i=,j=;i<= && j<=;j++)
{
for(k=i;k<=;k++)
if(a[k][j]) break;
if(a[k][j])
{
for(l=;l<=;l++) swap(a[i][l],a[k][l]);
for(l=;l<=;l++)//debug从1开始(回代)
{
if(l!=i && a[l][j])
for(k=;k<=;k++)
a[l][k]^=a[i][k];
}
i++;
}
}
for(int j=;j<i;j++) ans[j]=a[j][];
//自由元不是必须按的,则标记为0
} int main()
{
freopen("a.in","r",stdin);
int x,y,T,cas=;
scanf("%d",&T);
while(T--)
{
memset(a,,sizeof(a));
for(int i=;i<=;i++)
for(int j=;j<=;j++)
{
scanf("%d",&a[idx(i,j)][]);
for(int k=;k<=;k++)
{
x=i+dx[k];y=j+dy[k];
if(x> || y> || x< || y<) continue;
a[idx(i,j)][idx(x,y)]=;
}
}
for(int i=;i<=;i++) a[i][i]=;
gauss();
printf("PUZZLE #%d\n",++cas);
for(int i=;i<=;i++)
{
printf("%d ",ans[i]);
if(i%==) printf("\n");
}
}
return ;
}
【poj1222-又一道开关问题】高斯消元求解异或方程组的更多相关文章
- 【poj1830-开关问题】高斯消元求解异或方程组
第一道高斯消元题目~ 题目:有N个相同的开关,每个开关都与某些开关有着联系,每当你打开或者关闭某个开关的时候,其他的与此开关相关联的开关也会相应地发生变化,即这些相联系的开关的状态如果原来为开就变为关 ...
- [POJ1222]EXTENDED LIGHTS OUT(高斯消元,异或方程组)
题目链接:http://poj.org/problem?id=1222 题意:开关是四连通的,每按一个就会翻转自己以及附近的四个格(假如有).问需要翻转几个,使他们都变成关. 把每一个灯看作一个未知量 ...
- 【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 ...
- POJ 1222 EXTENDED LIGHTS OUT(高斯消元解异或方程组)
EXTENDED LIGHTS OUT Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 10835 Accepted: 6 ...
- [POJ1830]开关问题(高斯消元,异或方程组)
题目链接:http://poj.org/problem?id=1830 题意:中文题面,求的是方案数. 首先可以知道, 如果方案数不止一个的话,说明矩阵行列式值为0,即存在自由变元,由于变量只有两种状 ...
- [POJ1681]Painter's Problem(高斯消元,异或方程组,状压枚举)
题目链接:http://poj.org/problem?id=1681 题意:还是翻格子的题,但是这里有可能出现自由变元,这时候枚举一下就行..(其实这题直接状压枚举就行) /* ━━━━━┒ギリギリ ...
- hihocoder 第五十二周 高斯消元·二【高斯消元解异或方程 难点【模板】】
题目地址:http://hihocoder.com/contest/hiho57/problem/1 输入 第1..5行:1个长度为6的字符串,表示该行的格子状态,1表示该格子是亮着的,0表示该格子是 ...
- 【poj2947】高斯消元求解同模方程组【没有AC,存代码】
题意: p start enda1,a2......ap (1<=ai<=n)第一行表示从星期start 到星期end 一共生产了p 件装饰物(工作的天数为end-start+1+7*x, ...
随机推荐
- iOS-Masonry用法
__weak typeof(self) weakSelf = self; UIView * tempView = [[UIView alloc]init]; NSInteger count = ;// ...
- python urllib使用
Urllib是python内置的HTTP请求库包括以下模块urllib.request 请求模块urllib.error 异常处理模块urllib.parse url解析模块urllib.robotp ...
- 【Linux】- Ubutnu UFW防火墙的简单设置
ufw是一个主机端的iptables类防火墙配置工具,比较容易上手.一般桌面应用使用ufw已经可以满足要求了. 安装方法 sudo apt-get install ufw 使用方法 1.启用: sud ...
- MONyog-数据库性能监控工具
一.安装步骤 较为简单,网上可以搜索到,此处不做详细说明. 二.使用图解 此处介绍监控数据库连接量.并发量.吞吐量.响应时间等功能 1.设置连接需要监控的数据库 打开:http://127.0.0.1 ...
- Python爬虫requests判断请求超时并重新发送请求
下面是简单的一个重复请求过程,更高级更简单的请移步本博客: https://www.cnblogs.com/fanjp666888/p/9796943.html 在爬虫的执行当中,总会遇到请求连接 ...
- Delphi Dataset CurValue
TField.CurValue Property Represents the current value of the field component including changes made ...
- BZOJ 1045 糖果传递(思维)
设第i个人给了第i+1个人mi个糖果(可以为负),因为最后每个人的糖果都会变成sum/n. 可以得到方程组 mi-mi+1=a[i+1]-sum/n.(1<=i<=n). 把方程组化为mn ...
- Python字符串的简单操作
数据的操作 字符串的一些常用操作: 1 1 #!/usr/bin/env python 2 # #coding=utf-8 3 # 4 # test='hello world' 5 # print(t ...
- sql批量更新关系型数据库
更改gb_groupd里的chargingrulesname的值UPDATE tb_group SET tb_group.chargingrulesname =tb_chargingrules.c ...
- P1667 数列
题目描述 给定一个长度是n的数列A,我们称一个数列是完美的,当且仅当对于其任意连续子序列的和都是正的.现在你有一个操作可以改变数列,选择一个区间[X,Y]满足Ax +Ax+1 +…+ AY<0, ...