题目链接


Solutin:

将每个开关使用的情况当成未知数,如果开关i能影响到开关j,那么系数矩阵A[j][i]的系数为1。

每个开关增广矩阵的值是开关k的初状态异或开关k的目标状态,这个应该很容易想到。

方程都列好了,直接消元就好了。

code

/*解异或方程组
*/
#include <iostream>
#include <cstring>
using namespace std;
const int MAXN = 50;int prim[MAXN];
int A[MAXN][MAXN];int Gauss (int n, int m) {int col = 0, row = 0, tem, k = 0;for (; col < m && row < n; ++col) {for (tem = row; tem < n && A[tem][col] == 0; ++tem);if (tem == n)  continue;if (tem != row) {for (int i = 0; i <= n; ++i)swap (A[row][i], A[tem][i]);}for (int i = row + 1; i <= n; ++i) {if (A[i][col])for (int j = col; j <= m; ++j)A[i][j] ^= A[row][j];}row++;}for (int i = row; i < n; ++i)if (A[i][n] != 0) return -1;return m - row;
}
int n, m, cs, S, T;
int main() {ios::sync_with_stdio (0);cin >> cs;while (cs--) {cin >> n;S = T = 0;for (int i = 0, x; i < n; ++i) {cin >> x;if (x) S |= (1 << i);}for (int i = 0, x; i < n; ++i) {cin >> x;if (x) T |= (1 << i);}T ^= S;memset (A, 0, sizeof A);for (int i = 0; i < n; ++i){if (T & (1 << i) ) A[i][n] = 1;A[i][i]=1;}int x, y;while (cin >> x >> y, x && y)   A[y - 1][x - 1] = 1;int p = Gauss (n, n);if (p < 0) cout << "Oh,it's impossible~!!" << endl;elsecout << (1 << p) << endl;}
}

View Code

转载于:https://www.cnblogs.com/keam37/p/4052578.html

POJ 1830.开关问题(高斯消元)相关推荐

  1. POJ 1830 开关问题 高斯消元

    题意:给你N个开关,其中某些开关之间是相互影响的,即一个开关控制多个,那么每个开关操作与否为一个变元,有N个变元,开关之间相互影响的系数设为1,否则为0,对模2高斯消元求解自由变元个数. #inclu ...

  2. poj 1830 开关问题 高斯消元

    题目链接 高斯消元模板, 判断是否有解以及变元的数量. 1 #include <iostream> 2 #include <vector> 3 #include <cst ...

  3. POJ 1753 Flip Game 高斯消元

    和1222,1681差不多 POJ 1222 高斯消元更稳 POJ 1681 高斯消元 枚举自由变元 equ = 16 ,var = 16的方程组 #include <cstdio> #i ...

  4. POJ 2947 Widget Factory (高斯消元解同余方程组)

    题意:N种物品,M条记录,接写来M行,每行有K,str1,str2,表示第i个记录从星期str1到星期str2,做了K件物品,接下来的K个数为物品的编号.求做每个物品所需的时间,并且最后结果在3-9之 ...

  5. poj 1753 Flip Game 高斯消元 异或方程组 求最值

    题目链接:http://poj.org/problem?id=1753 题意:给出一张4*4的图,表示16个方格的初始颜色的情况(白或黑),相邻方格操作的时候会相互影响,求最少的操作次数,使得每个方格 ...

  6. 开关问题 POJ - 1830 高斯消元

    开关问题 POJ - 1830 有N个相同的开关,每个开关都与某些开关有着联系,每当你打开或者关闭某个开关的时候,其他的与此开关相关联的开关也会相应地发生变化,即这些相联系的开关的状态如果原来为开就变 ...

  7. POJ 1830 开关问题 【01矩阵 高斯消元】

    任意门:http://poj.org/problem?id=1830 开关问题 Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 1 ...

  8. POJ 1222 1681 1830 3185 开关灯问题 (高斯消元 异或方程组)

    POJ 1222 EXTENDED LIGHTS OUT 基本的开关灯问题.还保证唯一解. 我们把每一个灯泡当成一个状态xi,总共有30个,而且每个灯与其他灯的关系也很明显.所以我们就可以列30方程3 ...

  9. pku 1830 开关问题(构造矩阵+高斯消元)

    开关问题 Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 4653   Accepted: 1675 Description ...

  10. poj 1830 高斯消元

    终于会一点高斯消元了,认真学还是学的进去啊...... 搞明白解异或方程的原理,然后构造出矩阵就好做了.模板题 1 #include <cstdio> 2 #include <cst ...

最新文章

  1. js算法入门(3)--递归
  2. 爬虫书籍-Python网络爬虫权威指南OCR库 NLTK 数据清洗 BeautifulSoup Lambda表达式 Scrapy 马尔可夫模型
  3. 基于Centos7构建Kubernetes平台
  4. MySQL索引知识总结
  5. CVE-2018-4407 苹果设备远程溢出漏洞
  6. SVN忽略不必要的配置文件
  7. mysql报4934_mysql-Mariadb语法错误1064(42000)
  8. 深度学习目标检测之 YOLO v3
  9. Java 按行读写文件(解决中文乱码)
  10. linux指定的文件不是虚拟磁盘,linux下挂载VHD等虚拟磁盘文件的方法
  11. Python + Selenium WebDriver Api 知识回顾
  12. 【图像评价】基于matlab图像去雾质量评价【含Matlab源码 066期】
  13. # 创业计划书-样例参考五千套(二)
  14. Proxmark3系列教程1——PM3用法
  15. 【技巧】vscode快速生成html结构
  16. Ruby Rails开发资源
  17. 算法竞赛命题指南(命题流程、Polygon的使用等)
  18. mysql-8xxx遇坑后的安装
  19. linux改mac地址目录,Linux下如何修改网卡MAC地址
  20. java微信摇一摇_微信摇一摇功能实现

热门文章

  1. 通过MVC模式将Web视图和逻辑代码分离
  2. VC++6.0 内存泄露(Memory Leaks)征兆1
  3. AndroidStudio_安卓原生开发_在fragment中如何使用Toast_以及SharedPreferences---Android原生开发工作笔记149
  4. 大数据之-Hadoop完全分布式_Crondtab定时任务调度---大数据之hadoop工作笔记0042
  5. k8s集群部署项目_JAVA项目(部署镜像暴露应用)---K8S_Google工作笔记0062
  6. 统计车牌识别里面各个lable 的数量
  7. HTTP Error 500.19 – Internal Server Error – 0x80070021 (IIS 8.5)
  8. 杭电1437 天气情况
  9. boost学习之BOOST_PP_SEQ_FOR_EACH_R
  10. mysql 为什么不能安装_下载的mysql怎么无法安装