POJ 1222 & 1681 & 1830 & 3185 开关灯问题 (高斯消元 & 异或方程组)
2013-02-08 17:29
267 查看
POJ 1222 EXTENDED LIGHTS OUT
基本的开关灯问题.还保证唯一解.
我们把每一个灯泡当成一个状态xi,总共有30个,而且每个灯与其他灯的关系也很明显。所以我们就可以列30方程30个变元的方程组:
xi = 1 * xi + 1 * x(i-1) + 1 * x(i+1) + 1 * x(i-6) + 1 * x(i+6) = 1 or 0 (mod 2) (0还是1看这个灯的初始状态,即输入数据)
这明显就是裸的高斯消元了,题目还保证有唯一解。。。唯一的难点就是mod 2的处理,但是也不难,只要在行阶梯矩阵回带求解时取模就可以了~~~(具体看代码吧)
代码:http://www.shaidaima.com/source/view/11233
POJ 1681 Painter's Problem
开关灯模型,求解中1最少的方案(求最优解)。此时我们往往需要枚举自由变元的状态来求出多解,但此题数据较弱,不需枚举,每次将自由变元置为0可过.
代码:http://www.shaidaima.com/source/view/11234
POJ 1830 开关问题
开关灯问题,求解的个数。更简单,唯一解输出1,多解时解的个数就是(2^自由变元个数).
不过这题我把它换用异或方程组做,即:
M[0][0]x[0]^M[0][1]x[1]^…^M[0][N-1]x[N-1]=B[0]
M[1][0]x[0]^M[1][1]x[1]^…^M[1][N-1]x[N-1]=B[1]
…
M[N-1][0]x[0]^M[N-1][1]x[1]^…^M[N-1][N-1]x[N-1]=B[N-1]
★:解异或方程也可以套用高斯消元法,只须将原来的加减操作替换成异或操作就可以了,两个方程的左边异或之后,它们的公共项就没有了。
具体的操作方法是这样的:对于k=0..N-1,找到一个M[i][k]不为0的行i,把它与第k行交换,用第k行去异或下面所有M[i][j]不为0的行i,消去它们的第k个系数,这样就将原矩阵化成了上三角矩阵;最后一行只有一个未知数,这个未知数就已经求出来了,用它跟上面所有含有这个未知数的方程异或,就消去了所有的着个未知数,此时倒数第二行也只有一个未知数,它就被求出来了,用这样的方法可以自下而上求出所有未知数。
代码:http://www.shaidaima.com/source/view/11235
POJ 3185 The Water Bowls
开关灯问题,和POJ1681一样,不过这题数据可没那么好糊弄,要枚举自由元了~还有怎么求解异或方程组……
代码:http://www.shaidaima.com/source/view/11236
基本的开关灯问题.还保证唯一解.
我们把每一个灯泡当成一个状态xi,总共有30个,而且每个灯与其他灯的关系也很明显。所以我们就可以列30方程30个变元的方程组:
xi = 1 * xi + 1 * x(i-1) + 1 * x(i+1) + 1 * x(i-6) + 1 * x(i+6) = 1 or 0 (mod 2) (0还是1看这个灯的初始状态,即输入数据)
这明显就是裸的高斯消元了,题目还保证有唯一解。。。唯一的难点就是mod 2的处理,但是也不难,只要在行阶梯矩阵回带求解时取模就可以了~~~(具体看代码吧)
代码:http://www.shaidaima.com/source/view/11233
POJ 1681 Painter's Problem
开关灯模型,求解中1最少的方案(求最优解)。此时我们往往需要枚举自由变元的状态来求出多解,但此题数据较弱,不需枚举,每次将自由变元置为0可过.
代码:http://www.shaidaima.com/source/view/11234
POJ 1830 开关问题
开关灯问题,求解的个数。更简单,唯一解输出1,多解时解的个数就是(2^自由变元个数).
不过这题我把它换用异或方程组做,即:
M[0][0]x[0]^M[0][1]x[1]^…^M[0][N-1]x[N-1]=B[0]
M[1][0]x[0]^M[1][1]x[1]^…^M[1][N-1]x[N-1]=B[1]
…
M[N-1][0]x[0]^M[N-1][1]x[1]^…^M[N-1][N-1]x[N-1]=B[N-1]
★:解异或方程也可以套用高斯消元法,只须将原来的加减操作替换成异或操作就可以了,两个方程的左边异或之后,它们的公共项就没有了。
具体的操作方法是这样的:对于k=0..N-1,找到一个M[i][k]不为0的行i,把它与第k行交换,用第k行去异或下面所有M[i][j]不为0的行i,消去它们的第k个系数,这样就将原矩阵化成了上三角矩阵;最后一行只有一个未知数,这个未知数就已经求出来了,用它跟上面所有含有这个未知数的方程异或,就消去了所有的着个未知数,此时倒数第二行也只有一个未知数,它就被求出来了,用这样的方法可以自下而上求出所有未知数。
代码:http://www.shaidaima.com/source/view/11235
POJ 3185 The Water Bowls
开关灯问题,和POJ1681一样,不过这题数据可没那么好糊弄,要枚举自由元了~还有怎么求解异或方程组……
代码:http://www.shaidaima.com/source/view/11236
相关文章推荐
- POJ 1222 & 1681 & 1830 & 3185 开关灯问题 (高斯消元 & 异或方程组)
- POJ 1222 POJ 1830 POJ 1681 POJ 1753 POJ 3185 高斯消元求解一类开关问题
- 高斯消元 poj-1222、1681、1830、3185,sicily-1048
- [省选前题目整理][POJ 1830]开关问题(XOR方程组高斯消元)
- poj 1222 poj 1830高斯消元解决开关问题
- POJ 1681 Painter's Problem,POJ 1222 EXTENDED LIGHTS OUT (高斯消元之异或方程组),高斯消元模板
- poj 1222 EXTENDED LIGHTS OUT(高斯消元(开关问题 对2取模的01方程组))
- POJ 1830 开关问题(高斯消元解异或方程)
- POJ 1830 开关问题(异或版高斯消元)
- POJ - 1830 - 开关问题 ,POJ - 3185 - The Water Bowls,POJ - 1753 -Flip Game - (高斯消元解异或方程组)
- poj 1830 开关问题(高斯消元)
- poj 1830 开关问题 (高斯消元)
- POJ 1222 EXTENDED LIGHTS OUT(高斯消元,开关问题)
- poj 1222 高斯消元入门 开关问题
- POJ 开关问题 1830【高斯消元求矩阵的秩】
- POJ 1830 开关问题 (高斯消元)
- POJ 1222 EXTENDED LIGHTS OUT 高斯消元解异或方程组
- POJ 1222|Extended Lights Out|高斯消元|异或方程组
- [高斯消元] poj 1830 开关问题
- POJ 1830 开关问题(高斯消元)