题目链接

  • 分析:

    第一个高斯消元题目,操作是异或。奇偶能够用0、1来表示,也就表示成bool类型的方程,操作是异或。和加法没有差别

    题目中有两个未知量:每一个开关被按下的次数(0、1)、每一个开关的转换次数。

    题目仅仅和操作次数的奇偶有关,所以用0、1表示之后,对于每一个开关的转换次数就已经知道了。所以仅仅有一个未知量。能够线性表示。练习使用模板

const int maxn = 40;

int a[maxn][maxn];
int gauss(int N, int M)
{
int r, c, pvt;
bool flag;
for (r = 0, c = 0; r < N && c < M; ++ r, ++ c) {
flag = false;
for (int i = r; i < N; ++ i)
if (a[i][c]) {
flag = a[pvt=i][c];
break;
}
if (!flag) {
r--; continue;
}
if (pvt != r)
for (int j = r; j <= M; ++j) swap(a[r][j], a[pvt][j]);
for (int i = r+1; i < N; ++i)
if(a[i][c])
{
a[i][c] = false;
for (int j = c+1; j <= M; ++j) {
if(a[r][j]) a[i][j] = !a[i][j];
}
}
}
for (int i = r; i < N; ++i)
if (a[i][M]) return -1;
if (r < M) return M-r;
for (int i = M-1; i >= 0; --i)
{
for (int j = i+1; j < M; ++j)
a[i][M] ^= a[j][M]*a[i][j];
a[i][M] &= a[i][i];
}
return 0;
} int main()
{
// freopen("in.txt", "r", stdin);
int T, n, x, y;
RI(T);
FE(kase, 1, T)
{
RI(n);
CLR(a, 0);
REP(i, n) RI(a[i][n]);
REP(i, n)
{
int t;
RI(t);
a[i][n] ^= t;
a[i][i] = 1;
}
while (RII(x, y) && x)
{
a[y - 1][x - 1] = 1;
}
int ans = gauss(n, n);
if (ans == -1)
puts("Oh,it's impossible~!!");
else
WI(1 << ans);
}
return 0;
}

POJ1830开关问题——gauss消元的更多相关文章

  1. poj1830 开关问题[高斯消元]

    其实第一反应是双向BFS或者meet in middle,$2^{14}$的搜索量,多测,应该是可以过的,但是无奈双向BFS我只写过一题,已经不会写了. 发现灯的操作情况顺序不影响结果,因为操作相当于 ...

  2. POJ 1830 开关问题(Gauss 消元)

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

  3. $Gauss$消元

    $Gauss$消元 今天金牌爷来问我一个高消的题目,我才想起来忘了学高消... 高斯消元用于解线性方程组,也就是形如: $\left\{\begin{matrix}a_{11}x_1+a_{12}x_ ...

  4. 求一个n元一次方程的解,Gauss消元

    求一个n元一次方程的解,Gauss消元 const Matrix=require('./Matrix.js') /*Gauss 消元 传入一个矩阵,传出结果 */ function Gauss(mat ...

  5. Gauss 消元(模板)

    /* title:Gauss消元整数解/小数解整数矩阵模板 author:lhk time: 2016.9.11 没学vim的菜鸡自己手打了 */ #include<cstdio> #in ...

  6. hdu 5755(Gauss 消元) &poj 2947

    Gambler Bo Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Tota ...

  7. poj 1681(Gauss 消元)

    Painter's Problem Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 5875   Accepted: 2825 ...

  8. POJ 3185 The Water Bowls 【一维开关问题 高斯消元】

    任意门:http://poj.org/problem?id=3185 The Water Bowls Time Limit: 1000MS   Memory Limit: 65536K Total S ...

  9. POJ - 1681: Painter's Problem (开关问题-高斯消元)

    pro:开关问题,同上一题. 不过只要求输出最小的操作步数,无法完成输出“inf” sol:高斯消元的解对应的一组合法的最小操作步数. #include<bits/stdc++.h> #d ...

随机推荐

  1. 【CCF】送货 欧拉路径

    80分,暂时没找出20分的Bug #include<iostream> #include<cstdio> #include<cstring> #include< ...

  2. java面试题之Executor和Executors的区别

    Executor 接口对象能执行我们的线程任务: Executors 工具类的不同方法按照我们的需求创建了不同的线程池,来满足业务的需求. ExecutorService 接口继承了Executor接 ...

  3. UGUI 点击穿透问题

    unity上 用 做游戏欢迎界面上通用的ui,然后导到游戏里面直接用,但发现游戏里面是用ngui的,点击ugui 的ui 会穿透过去 ngui会响应,原本模型的点击处理也会响应 我用的 unity 版 ...

  4. OSU!(bzoj 4318)

    Description osu 是一款群众喜闻乐见的休闲软件.  我们可以把osu的规则简化与改编成以下的样子:  一共有n次操作,每次操作只有成功与失败之分,成功对应1,失败对应0,n次操作对应为1 ...

  5. 开始学习es6(二) let 与 const 及 块级作用域

    1.var JavaScript中,我们通常说的作用域是函数作用域,使用var声明的变量,无论是在代码的哪个地方声明的,都会提升到当前作用域的最顶部,这种行为叫做变量提升(Hoisting) cons ...

  6. Linux命令文件查看过滤

    Linux命令篇 1.查看一个文件的后100行的命令: tail -n 100 Linux下查看文件前几行一般用head -n xx,查看后面几行用tail -n xx.除此之外,还有: tail - ...

  7. hdu 1181(Floyed)

    变形课 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others)Total Submis ...

  8. hdu3947 给一些已知(需费用)路径去覆盖一些边 //预先加灌法费用流

    River Problem 题意:一个有向树(河流),只有一个汇点1,每条边只有一个出度.有些河道有污染指数xi,必需要治理,有m段路径,可以去覆盖这些,每被覆盖一次,xi降低响应值. :即 给出一些 ...

  9. LeetCode OJ-- Spiral Matrix II

    https://oj.leetcode.com/problems/spiral-matrix-ii/ 螺旋矩阵,和题目一一样的思路,这个是产生n*n 矩阵. #include <iostream ...

  10. SQL Server 触发器 详细讲解

    最近在做微信活动,需要用到存储过程,在网上找了下感觉使用触发器更好些,和大家分享下 希望对你有用. 触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程.触发器主要是通过事件进行触发被自动 ...