pro:给定5*6的灯的状态,如果我们按下一个灯的开关,它和周围4个都会改变状态。求一种合法状态,使得终状态全为关闭;

sol:模2意义下的高斯消元。 终于自己手打了一个初级板子。

  1. #include<bits/stdc++.h>
  2. #define rep(i,a,b) for(int i=a;i<=b;i++)
  3. using namespace std;
  4. int a[][],ans[];
  5. int x[]={,,,,-};
  6. int y[]={,,-,,};
  7. void Guass()
  8. {
  9. rep(i,,){
  10. int mark=i;
  11. rep(j,i+,) if(abs(a[j][i])>abs(a[mark][i])) mark=j;
  12. if(mark!=i) rep(j,,) swap(a[i][j],a[mark][j]);
  13. if(!a[i][i]) continue; //全为0
  14. rep(j,i+,){
  15. if(!a[j][i]) continue; //前面几排为0的不操作
  16. rep(k,i,){
  17. a[j][k]^=a[i][k];
  18. //a[j][k]=(a[j][k]&a[i][i])^(a[i][k]&a[j][i]);
  19. }
  20. }
  21. }
  22. for(int i=;i>=;i--){
  23. if(!a[i][i]) continue;
  24. ans[i]=a[i][]&a[i][i];
  25. rep(j,,i-) a[j][]^=(a[j][i]&ans[i]);
  26. }
  27. }
  28. int main()
  29. {
  30. int T,N,M,Ca=;
  31. scanf("%d",&T);
  32. while(T--){
  33. memset(a,,sizeof(a));
  34. rep(i,,)
  35. scanf("%d",&a[i][]);
  36. rep(i,,)
  37. rep(j,,) {
  38. int t=i*+j;
  39. rep(k,,) {
  40. if(i+x[k]>=&&i+x[k]<=&&j+y[k]>=&&j+y[k]<=){
  41. a[(i+x[k])*+j+y[k]][t]=;
  42. }
  43. }
  44. }
  45. Guass();
  46. printf("PUZZLE #%d\n",++Ca);
  47. rep(i,,) {
  48. printf("%d",ans[i]);
  49. if(i%==) putchar('\n');
  50. else putchar(' ');
  51. }
  52. }
  53. return ;
  54. }

POJ - 1222: EXTENDED LIGHTS OUT (开关问题-高斯消元)的更多相关文章

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

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

  2. POJ 1222 EXTENDED LIGHTS OUT(翻转+二维开关问题)

    POJ 1222 EXTENDED LIGHTS OUT 今天真是完美的一天,这是我在poj上的100A,留个纪念,马上就要期中考试了,可能后面几周刷题就没这么快了,不管怎样,为下一个200A奋斗, ...

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

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

  4. 【高斯消元】Poj 1222:EXTENDED LIGHTS OUT

    Description In an extended version of the game Lights Out, is a puzzle with 5 rows of 6 buttons each ...

  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 (高斯消元)

    题目链接 题意:5*6矩阵中有30个灯,操作一个灯,周围的上下左右四个灯会发生相应变化 即由灭变亮,由亮变灭,如何操作使灯全灭? 题解:这个问题是很经典的高斯消元问题.同一个按钮最多只能被按一次,因为 ...

  8. Poj 1222 EXTENDED LIGHTS OUT

    题目大意:给你一个5*6的格子,每个格子中有灯(亮着1,暗着0),每次你可以把一个暗的点亮(或者亮的熄灭)然后它上下左右的灯也会跟着变化.最后让你把所有的灯熄灭,问你应该改变哪些灯. 首先我们可以发现 ...

  9. POJ 1222 EXTENDED LIGHTS OUT(反转)

    EXTENDED LIGHTS OUT Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 12616   Accepted: 8 ...

随机推荐

  1. ThinkPHP部署在lnmp环境中碰到的问题

    先说一下问题: 因为tp5的入口文件在public目录下,而Application和public同级, 我用的lnmp1.5默认做了防跨站目录设置,所以导致入口文件无法进入application目录, ...

  2. Android 音视频深入 十九 使用ijkplayer做个视频播放器(附源码下载)

    项目地址https://github.com/979451341/Myijkplayer 前段时候我觉得FFmpeg做个视频播放器好难,虽然播放上没问题,但暂停还有通过拖动进度条来设置播放进度,这些都 ...

  3. 【tomcat环境搭建】一台服务器上部署多个tomcat

    一台服务器上面如何部署多个tomcat?其实linux和windows步骤都差不多,都是: 第一步:解压tomcat安装包后,复制一份并且重命名:多个tomcat就多复制一份 第二步:将复制的tomc ...

  4. JAVA常用异常类

    算数异常类:   ArithmeticExecption 空指针异常类:    NullPointerException 指定类不存在:    ClassNotFoundException 字符串转换 ...

  5. C++11-->单生产者,单消费者问题

    参考上一篇C++11并发编程 #include <iostream> #include <queue> #include <assert.h> #include & ...

  6. 遇到的难题之一 —— js方法toFixd()

    工作中遇到金额需要保留两位小数的需求,单价1.265,数量为1,正常来讲金额应为1.27,用了toFixd()方法后结果为1.26. 最终找到问题所在:1.265 - 1.26 = 0.0049999 ...

  7. Map集合练习题

    (Map)已知某学校的教学课程内容安排如下: 完成下列要求:1) 使用一个Map,以老师的名字作为键,以老师教授的课程名作为值,表示上述课程安排.2) 增加了一位新老师Allen 教JDBC3) Lu ...

  8. ABP异常处理

    1.编译器错误消息: CS0012: 类型“System.Object”在未被引用的程序集中定义.必须添加对程序集“System.Runtime, Version=4.0.0.0, Culture=n ...

  9. Qt笔记之QGADGET

    QGADGET宏类似于Q_OBJECT宏,是一个万能容器,至于这个宏所实现的功能,我也不懂,Q_OBJECT宏的功能到时了解一些,我想他们应该差不多,要想使用从Q_OBJECT继承来的类,就得在一开始 ...

  10. Oracle入门之对表内容的dml操作

    oracle表的管理--添加数据 使用insert语句向表中插入数据 插入数据基本语法: insert into table[(column [,column...])] values(value [ ...