208. 开关问题 - 异或方程组

208. 开关问题 - AcWing题库

208. 开关问题 - 异或方程组_第1张图片

 

 我们可以找每一个开关由哪些开关掌控,每一个开关的值设为动过为1,没动过为0

再看当前开关的状态与结果的状态是否一致,一致为0,说明掌控这个开关的开关门的异或值为0,不一致则为1,说明掌控这个开关的开关门的异或值为1。

可以由此建立异或方程组,每一行代表一个开关,第i行第j列如果为1代表第i个开关受第j个开关掌控,为0代表不受第j个开关掌控

高斯消元后看剩余行的个数也就是自由元的个数,每有一个0 = 0, 答案数乘2。

你可能感兴趣的:(日常水题,算法,c++)