題意:中文題面,求的是方案數。
首先可以知道, 如果方案數不止乙個的話,說明矩陣行列式值為0,即存在自由變元,由於變數只有兩種狀態,那麼方案數就是2^自由變元數。
從起始狀態到終止狀態,只需要關心起始和終止哪些狀態不一樣就行,也就是翻轉奇數次。
由於是倒推,所以開關的影響要反過來存。
1 #include 2using
namespace
std;
34 typedef long
long
ll;5
const
int maxn = 33;6
int equ, var;7
inta[maxn][maxn];
8int
x[maxn];
9int
free_x[maxn];
10int
free_num;
1112
intgauss()
21if(a[max_r][col] == 0
) 26
if(max_r !=k)
30for(int i = k + 1; i < equ; i++) 35}
36}37}
38for(int i = k; i < equ; i++)
42if(k < var) return
var -k;
43for(int i = var - 1; i >= 0; i--) 48}
49return0;
50}5152
intmain()
67int
u, v;
68for(int i = 0; i < var; i++)
72while(~scanf("
%d%d
",&u,&v) && u+v)
75int ret =gauss();
76if(ret == -1
) puts(wtf);
77else printf("
%lld\n
", (ll)((ll)1
<79return0;
80 }
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...