POJ 1830 開關問題(Gauss 消元)

2022-06-02 07:24:06 字數 2217 閱讀 1256

time limit:1000ms

memory limit:30000k

total submissions:7726

accepted:3032

description

有n個相同的開關,每個開關都與某些開關有著聯絡,每當你開啟或者關閉某個開關的時候,其他的與此開關相關聯的開關也會相應地發生變化,即這些相聯絡的開關的狀態如果原來為開就變為關,如果為關就變為開。你的目標是經過若干次開關操作後使得最後n個開關達到乙個特定的狀態。對於任意乙個開關,最多只能進行一次開關操作。你的任務是,計算有多少種可以達到指定狀態的方法。(不計開關操作的順序)

input

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

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

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

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

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

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

output

如果有可行方法,輸出總數,否則輸出「oh,it's impossible~!!」 不包括引號

sample input

2

30 0 0

1 1 1

1 21 3

2 12 3

3 13 2

0 03

0 0 0

1 0 1

1 22 1

0 0

sample output

4

oh,it's impossible~!!

hint

第一組資料的說明: 

一共以下四種方法: 

操作開關1 

操作開關2 

操作開關3 

操作開關1、2、3 (不記順序) 

source

liangliang@poj

gauss消元的異或(模2)版,第一次寫寫的有點麻煩,要簡單的參照kuangbin牌gauss消元模板。。

每個開關的影響範圍可以列為乙個列向量ai,他的操作為xi(只有0/1),我們要求解的就是a1*x1+a2*x2+……an*xn=b(為到達狀態與初始狀態的異或)

求解這個x1,x2……xn 直接用gauss消元。

1 #include2 #include3 #include4

#define clr(x) memset(x,0,sizeof(x))

5using

namespace

std;

6int a[50][50];7

int b0[50],b1[50],b[50];8

intmain()923

while(scanf("

%d%d

",&a1,&a2) && a1 &&a2)

2427

for(int i=0;i)

2832 ct=-1;33

34for(int i=0;;i++)

3542

while(!a[i][ct])

4353

break;54

}55if(!a[i][ct])

56 ct++;

57if(ct>=n)

58break;59

}60if(ct>=n)

6165

for(int j=i+1;j)

66if

(a[j][ct])

67for(int k=ct;k<=n;k++)

68 a[j][k]=(a[j][k]+a[i][k])%2;69

}70 inf=0;71

for(int i=p;i)

72if

(a[i][n])

7377

//for(int i=0;i78

//83

if(inf)

8488 ans=1

<<(n-p);

89 printf("

%d\n

",ans);90}

91return0;

92 }

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,渾然不知有這等...