POJ 1830 開關問題 高斯消元XOR

2022-04-06 20:18:11 字數 1072 閱讀 8617

和上兩題一樣

input

輸入第一行有乙個數k,表示以下有k組測試資料。 

每組測試資料的格式如下: 

第一行 乙個數n(0 < n < 29) 

第二行 n個0或者1的數,表示開始時n個開關狀態。 

第三行 n個0或者1的數,表示操作結束後n個開關的狀態。 

接下來 每行兩個數i j,表示如果操作第 i 個開關,第j個開關的狀態也會變化。每組資料以 0 0 結束。 

注意判斷無解別把if放錯位置

我的now表示當前該哪個方程組了,一開始是1確定乙個變數就+1,答案應該是$2^$才行

#include #include 

#include

#include

#include

#include

using

namespace

std;

const

int n=30

;inline

intread()

while(c>='

0'&&c<='9')

return x*f;

}int

n,u,v;

bitset

a[n];

void ini()

intnow;

void

gauss()

}int

main()

gauss();

int flag=0

;

//for(int i=1;i<=n;i++) for(int j=1;j<=n+1;j++) printf("%d%c",a[i][j]==1,j==n+1?'\n':' ');

for(int i=1;i<=n;i++)

if(a[i][n+1

]) }

if(flag) puts("

oh,it's impossible~!!");

else printf("

%d\n

",1<<(n-now+1

)); }

}

POJ 1830 開關問題 高斯消元

開關問題 time limit 1000ms memory limit 30000k total submissions 3390 accepted 1143 description 有n個相同的開關,每個開關都與某些開關有著聯絡,每當你開啟或者關閉某個開關的時候,其他的與此開關相關聯的開關也會相應...

poj 1830 開關問題 高斯消元

題意是 給一些開關的初始狀態 0 或1 在給出終止狀態,在給出相關的變化規則,規則 x 變化 則 y 也變 x y 讀入。輸出有多少種開關的撥動情況,使初始狀態變成終止狀態。此問題 很容易轉化成 高斯消元 解 異或方程組。t 方程組的自由化的個數,則結果就是 2 t include include ...

poj 1830 開關問題(高斯消元)

終止狀態是從初始狀態由開關組合影響而形成的,那麼就有乙個等式使得初始狀態可以到達終止狀態,例如a,b,c三個開關 e a xa mp a a xb mp a b xc map a c s a e b xa mp b a xb mp b b xc map b c s b e c xa mp c a x...