poj1830 開關問題 gauss

2022-08-23 03:36:08 字數 1144 閱讀 4102

poj上的中文題面,大家一定要親眼見證一下

分析:

這道題和poj1222大同小異

還是異或方程求解

唯一不同的就是,需要計算方案數

這就和那些不確定的元素有關了

每個不定元都有兩種選擇:開或關

所以方案數就是

2^(不定元個數)

怎麼確定有沒有解呢

for (int i=n;i>=1;i--)

if (a[i]

[n+1]!=0&&a[i]

[i]==0)

return

0;

不要忘了now++

題目描述中:

每行兩個數i j,表示如果操作第 i 個開關,第j個開關的狀態也會變化

也就是說第i決定第j個,所以a[j][i]=1

所以在列方程的時候,一定要找好對應關係

這再一次說明了那條真理

//這裡寫**片

#include

#include

#include

using

namespace

std;

int cnt,n;

int mp1[35],mp2[35];

int a[35][35];

int gauss()

if (to!=now)

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

swap(a[to][j],a[now][j]);

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

if (j!=now&&a[j][i])

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

a[j][k]^=a[now][k];

now++;

}for (int i=n;i>=1;i--)

if (a[i][n+1]!=0&&a[i][i]==0)

return

0; return1;}

int main()

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

if (gauss())

return

0;}

POJ1830 開關問題

中文題目,就不說題目大意了 解題思路 由於對於每乙個開關最多改變一次,那麼對於每乙個開關,只有改變與不改變兩種操作,設改變操作為1,不改變操作為0,那麼對開關的操作可以用乙個n維向量x t x 1,x2 x n 其中xi 0或者 1 我們需要知道初始狀態經過某次操作之後的狀態,並拿它與目標狀態比較。...

開關問題 POJ 1830

題意 燈泡對應開關,有些開關的撥動會影響其他的開關,給出燈泡初始狀態,給出燈泡結束狀態,問有幾種操作可以完成 思路 建立矩陣,消元後有n個自由變元,答案就是2 n個 include include include includeusing namespace std const int maxn 5...

POJ 1830 開關問題

前述 今天又領略了被假模版坑的心痛,基本都在調 由於被問及相關poj 1222的異或方程組的相關問題,我總算是知道了昨天那個博主為什麼理解了兩天了.原來poj 1222的相關題解都是用矩陣講的異或方程組,講的賊煩,而我正好找了乙個類似卻又不存在的題目,用他的 a了這個poj 1222,渾然不知有這等...