異或高斯消元 暴搜 lights 燈

2021-08-08 09:11:49 字數 1408 閱讀 4633

問題 f: [usaco2009 nov]lights 燈

時間限制: 1 sec 記憶體限制: 64 mb

題目描述

貝希和她的閨密們在她們的牛棚中玩遊戲。但是天不從人願,突然,牛棚的電源跳閘了,所有的燈都被關閉了。貝希是乙個很膽小的女生,在伸手不見拇指的無盡的黑暗中,她感到驚恐,痛苦與絕望。她希望您能夠幫幫她,把所有的燈都給重新開起來!她才能繼續快樂地跟她的閨密們繼續玩遊戲!牛棚中一共有n(1 <= n <= 35)盞燈,編號為1到n。這些燈被置於乙個非常複雜的網路之中。有m(1 <= m <= 595)條很神奇的無向邊,每條邊連線兩盞燈。每盞燈上面都帶有乙個開關。當按下某一盞燈的開關的時候,這盞燈本身,還有所有有邊連向這盞燈的燈的狀態都會被改變。狀態改變指的是:當一盞燈是開著的時候,這盞燈被關掉;當一盞燈是關著的時候,這盞燈被開啟。問最少要按下多少個開關,才能把所有的燈都給重新開啟。資料保證至少有一種按開關的方案,使得所有的燈都被重新開啟。

輸入 *第一行:兩個空格隔開的整數:n和m。

*第二到第m+1行:每一行有兩個由空格隔開的整數,表示兩盞燈被一條無向邊連線在一起。沒有一條邊會出現兩次。

輸出 第一行:乙個單獨的整數,表示要把所有的燈都開啟時,最少需要按下的開關的數目。

樣例輸入

5 6

1 2

1 3

4 2

3 4

2 5

5 3

輸入細節:

一共有五盞燈。燈1、燈4和燈5都連線著燈2和燈3。

樣例輸出

3 輸出細節:

按下在燈1、燈4和燈5上面的開關。

提示是很像異或方程組(剛剛學會。。)

最終的狀態(常數項)為1,代表亮了。如果兩個燈連線,相應位置為一

而最後解出來對於每個燈,有的確定了狀態,有的還是自由元(狀態不確定),對於自由元,還要深搜確定最小解。

那麼我們來從n到1倒敘列舉,

對於乙個確定的,他的狀態為他之後(已定的(也可以是dfs中暫定的自由元)的狀態異或之和)再異或上常數項(開滅),就是自己的狀態。

對於自由元,兩種情況分別列舉,

對於這個方程,如果屬於自己這一位係數是0,那自己是什麼對自己的方程無影響,就可以列舉。

#include

#include

#include

#include

#include

using

namespace

std;

int n,m,ans=10000,sum,a[40][40],w[40];

inline

void dfs(int x)

if(a[x][x])

else

}void gaosi()

}int main()

高斯消元異或版模板

2016 09 08 晚上 author itak motto 今日的我要超越昨日的我,明日的我要勝過今日的我,以創作出更好的 為目標,不斷地超越自己。include include include include include include include include include us...

poj1830開關問題 異或高斯消元

題目 根據題意,構造出n元方程組 a 1,1 x1 a 1,2 x2 a 1,3 x3 a 1,n xn st1 ed1 a 2,1 x1 st2 ed2 其中a x,y 表示x是否受到y影響 x為各燈是否操作 stx為x初始狀態,edx為x目標狀態 把乙個方程壓縮成乙個整數,第1位表示等號右邊,之...

POJ1830 開關問題 高斯消元 異或

設xixi表示第ii個開關的操作情況,那麼xi 1xi 1為按了這個開關,否則xi 0xi 0表示這個開關並沒有按下去,那麼我們接著統計ai,jai,j表示第i個開關和第j個開關的聯絡情況,ai,j 1ai,j 1表示按下j會影響i的狀態,否則就是不會影響,即ai,j 0ai,j 0,特殊地乙個點就...