POJ1830(异或方程组的高斯消元)

对于式子(((A^B)^B)^B)……,即A对B进行连续异或时,可以发现有如下规律:若B为1,式子的值会在每次异或之后取反,因为0^1=1,1^1=0,……若B为0,式子的值会保持A值不变,因为0^0=0,1^0=1,……因而这种性质可以利用在POJ1830这样的有关联的开关问题上:(每个开关只能改变一次)假设开关1和开关2、3相关联,且开关1的初始状态为0,终态为1,。用1表
摘要由CSDN通过智能技术生成

对于式子(((A^B)^B)^B)……,即A对B进行连续异或时,可以发现有如下规律:

若B为1,式子的值会在每次异或之后取反,因为0^1=1,1^1=0,……

若B为0,式子的值会保持A值不变,因为0^0=0,1^0=1,……

因而这种性质可以利用在POJ1830这样的有关联的开关问题上:(每个开关只能改变一次)

假设开关1和开关2、3相关联,且开关1的初始状态为0,终态为1,。

用1表示该开关被改变过,0表示未被改变。

则开关1到达终态的情况可能有:①只改变开关1   ②改变开关1、2、3

则对应的异或式子为  ①((1^0)^0)=1  ②((1^1)^1)=1。


同样的对于开关2和开关3可以列出相应的式子,此时将开关是否被操作过设置为变量x1,x2,x3。

列出3条方程组,等式右边1表示与初始状态不同,0表示与初始状态相同。

解的数目即为到达终态的情况数目,每组解对应着一个开关操作情况。

对于题目的第一个测试用例列出的异或方程为

①x1^x2^x3=1

②x1^x2^x3=1

③x1^x2^x3=1

可求出自由变量有2个,则情况总数为1<<2=4。

对于求解异或方程组,和普通的加减方程组是一样的,只需要将加减操作换成异或操作,高斯消元化简后求出自由变量的数目。

第二个测试用例列出的矩阵为

1 1 0 1         1 1 0 1

1 1 0 0

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值