开关问题 POJ 1830(高斯消元求解的个数)

题目链接:http://poj.org/problem?id=1830

题目描述:中文题,POJ上的描述是:有N个相同的开关,每个开关都与某些开关有着联系,每当你打开或者关闭某个开关的时候,其他的与此开关相关联的开关也会相应地发生变化,即这些相联系的开关的状态如果原来为开就变为关,如果为关就变为开。你的目标是经过若干次开关操作后使得最后N个开关达到一个特定的状态。对于任意一个开关,最多只能进行一次开关操作。你的任务是,计算有多少种可以达到指定状态的方法。( 不计开关操作的顺序)

思路:在做另一道类似的题目时跑来先做这道更好理解的题题了。第一次做出高斯消元这类题目,这两天抽空看了网上很多高斯消元相关介绍,也算是对其有了较浅的认识,今天打算再做三道这方面的题目就睡觉。这道题给了初末时刻所有开关的状态,分别设S[i] 和 E[i] 分别为开关i的初末状态,若E[i] ^ S[i] == 1则说明开关i的状态发生了变化。设A[i][j] == 1表示开关j可以控制开关i,注意A[i][i] == 1(每个开关都可以控制自身),X[i]表示是否打开或关闭开关i。则E[i] ^ S[i] == A[i][1] * X[1] ^ A[i][2] * X[2]  ^ ... ^ A[i][n] * X[n],A[i][j] * X[j]表示只有第j个开关能控制第i个开关并且对第j个开关进行状态修改时第i个开关的状态才会发生变化,所有控制i灯的灯异或就是i等最后的状态。 

这样就列如下等式(每个元素的值只有可能为0或1&

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值