本人代码模板主要来自“英雄哪里出来”。该博客对于高斯消元的入门讲解十分详尽。
此题可以不用异或方程组来解,可以用模线性方程组来解。
题意:给定灯的数目和开关数目,以及开关控制哪些灯(一个开关可以控制多盏灯)。
之后,给出灯的状态(0:关,1:开) 。问:达到最后灯的状态方法有几种。
大致思路:以对每个开关(S)的操作为变量x(可以理解为取值只有0和1,偶数次操作等于没有操作),
以某盏灯(L)被开关控制的情况为系数,被那个开关控制则对应变量的系数为1,不被那个开关控制
则对应变量系数为0.最后建立模2的线性方程组。
(S1*X1+S2*X2+...+Sn*Xn)%2=L1
(S1'*X1+S2'*X2+...+Sn'*Xn)%2=L2
.
.
.
本题wa点:矩阵在运算过程中是会变的,可以事先开一个二维数组来存储原始矩阵
AC代码如下:
/*模板主要出自英雄从哪里来*/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algo