题意:给定一个\(5\times 6\)的棋盘的\(01\)状态,每次操作可以使它自己和周围四个格子状态取反,求如何操作,输出一个\(01\)矩阵

题解:这题可以通过枚举第一行的状态然后剩下递推来做,但是这里还是写一种好理解的高斯消元解异或方程组的方法。

对于每个格子列一个方程,未知数就是要求的答案矩阵,系数的话把它周围的设为1,其他设为0。然后右边的常数项为它本来的状态。然后就高斯消元嘛。

我用了bitset优化,实际上可能unsigned int或者long long也可以。

#include <algorithm>
#include <bitset>
#include <cstdio>
using namespace std; const int n = 5;
const int m = 6;
const int N = 34;
const int dx[] = {0, 1, 0, -1, 0};
const int dy[] = {0, 0, 1, 0, -1}; int f[N];
bitset<N> a[N]; int pos(int x, int y) {
return (x - 1) * m + y;
} void gauss(int n) {
for(int i = 1, j; i <= n; i ++) {
for(int k = i; k <= n; k ++) if(a[k][i]) j = k, k = n;
if(i != j) swap(a[i], a[j]);
for(j = i + 1; j <= n; j ++) if(a[j][i]) a[j] ^= a[i];
}
for(int i = n - 1; i >= 1; i --)
for(int j = i + 1; j <= n; j ++)
if(a[j][n + 1] && a[i][j]) a[i][n + 1] = !a[i][n + 1];
} int main() {
int test; scanf("%d", &test);
for(int t = 1; t <= test; t ++) {
for(int i = 1; i <= n; i ++)
for(int j = 1; j <= m; j ++)
scanf("%d", &f[pos(i, j)]);
for(int i = 1; i <= n; i ++)
for(int j = 1; j <= m; j ++) {
int p = pos(i, j); a[p].reset();
a[p][n * m + 1] = f[p];
for(int k = 0; k < 5; k ++) {
int x = i + dx[k], y = j + dy[k];
if(x >= 1 && x <= n && y >= 1 && y <= m) {
a[p][pos(x, y)] = 1;
}
}
}
gauss(n * m);
printf("PUZZLE #%d\n", t);
for(int i = 1; i <= n; i ++)
for(int j = 1; j <= m; j ++)
printf("%d%c", (int) a[pos(i, j)][n * m + 1], " \n"[j == m]);
}
return 0;
}

「ZOJ 1354」Extended Lights Out「高斯消元」的更多相关文章

  1. uva 1560 - Extended Lights Out(枚举 | 高斯消元)

    题目链接:uva 1560 - Extended Lights Out 题目大意:给定一个5∗6的矩阵,每一个位置上有一个灯和开关,初始矩阵表示灯的亮暗情况,假设按了这个位置的开关,将会导致周围包含自 ...

  2. POJ 1222 EXTENDED LIGHTS OUT(高斯消元解异或方程组)

    EXTENDED LIGHTS OUT Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 10835   Accepted: 6 ...

  3. 【POJ】1222 EXTENDED LIGHTS OUT(高斯消元)

    http://poj.org/problem?id=1222 竟然我理解了两天..... 首先先来了解异或方程组(或者说mod2方程组,modk的话貌似可以这样拓展出来) 对于一些我们需要求出的变量a ...

  4. [POJ1222]EXTENDED LIGHTS OUT(高斯消元,异或方程组)

    题目链接:http://poj.org/problem?id=1222 题意:开关是四连通的,每按一个就会翻转自己以及附近的四个格(假如有).问需要翻转几个,使他们都变成关. 把每一个灯看作一个未知量 ...

  5. POJ 1222 EXTENDED LIGHTS OUT(高斯消元)

    [题目链接] http://poj.org/problem?id=1222 [题目大意] 给出一个6*5的矩阵,由0和1构成,要求将其全部变成0,每个格子和周围的四个格子联动,就是说,如果一个格子变了 ...

  6. POJ 1222 EXTENDED LIGHTS OUT(高斯消元)题解

    题意:5*6的格子,你翻一个地方,那么这个地方和上下左右的格子都会翻面,要求把所有为1的格子翻成0,输出一个5*6的矩阵,把要翻的赋值1,不翻的0,每个格子只翻1次 思路:poj 1222 高斯消元详 ...

  7. POJ 1222 EXTENDED LIGHTS OUT(高斯消元解XOR方程组)

    http://poj.org/problem?id=1222 题意:现在有5*6的开关,1表示亮,0表示灭,按下一个开关后,它上下左右的灯泡会改变亮灭状态,要怎么按使得灯泡全部处于灭状态,输出方案,1 ...

  8. POJ1222EXTENDED LIGHTS OUT(高斯消元)

    EXTENDED LIGHTS OUT Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 11815   Accepted: 7 ...

  9. LOJ 2542 「PKUWC2018」随机游走 ——树上高斯消元(期望DP)+最值反演+fmt

    题目:https://loj.ac/problem/2542 可以最值反演.注意 min 不是独立地算从根走到每个点的最小值,在点集里取 min ,而是整体来看,“从根开始走到点集中的任意一个点就停下 ...

随机推荐

  1. ARM模式下创建Express Route

    在Azure的ARM模式下,创建Express Route的命令和ASM模式下是有一些区别的. 本文将介绍在ARM模式下,如果创建Express Route的Circuit. 1. 查看支持的Serv ...

  2. 使用jQuery+css实现选项卡切换功能

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <hea ...

  3. 蓝桥杯 基础练习 BASIC-25 回形取数

    基础练习 回形取数   时间限制:1.0s   内存限制:512.0MB 问题描述 回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度.一开始位于矩阵左上角,方向向下. 输入格式 ...

  4. java流类练习前篇

    总结: package com.aini; import java.io.*; public class gf { public static String main(String[] args) t ...

  5. ruby中nil?, empty? and blank?

    In Ruby, you check with nil? if an object is nil: article = nil article.nil? # => true empty? che ...

  6. xcode修改横屏

    1.修改工程属性 2.修改info.plist文件

  7. RegisterUserFunc为测试对象添加新方法或重写已有方法

    QTP中为了提高扩展性,提供了一个为测试对象添加一个新的自定义方法,或者重写测试对象已有的方法的函数RegisterUserFunc,在此给大家分享一下. RegisterUserFunc:为测试对象 ...

  8. c#抓取网页数据

    写了一个简单的抓取网页数据的小例子,代码如下: //根据Url地址得到网页的html源码 private string GetWebContent(string Url) { string strRe ...

  9. [Python Study Notes]行人检测

    # -------------------------------------------------------------- # @文件: 行人识别.py # @工程: blog # @时间: 2 ...

  10. [Python Study Notes]双层柱状图绘制

    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...