POJ1830 開關問題 高斯消元

2021-07-15 17:16:00 字數 841 閱讀 3664

給n個開關的初始狀態,要把開關翻轉成目標狀態,其中每個開關與一些開關相關聯,若不計開關翻轉的先後順序,且每個開關最多隻翻轉一次,求翻轉到目標狀態的方法數?

這是乙個很典型的高斯消元題目,設第i個開關翻轉次數為xi,然後構造係數矩陣解方程就可以了;

#include#include#include#include#include#include#include#include#include#include//#pragma comment(linker, "/stack:1024000000,1024000000");

using namespace std;

#define inf 0x3f3f3f3f

#define maxn 35

int a[maxn][maxn];

int x[maxn];

int gauss(int equ,int var)

if(a[max_r][now_c]==0)

if(max_r!=now_r)

for(int j=now_r+1;j}

for(int i=now_r;iif(now_r==equ) return 0;

else return equ-now_r;

}int n;

int pre[maxn],aim[maxn];

int main()

for(int i=0;iint ans=gauss(n,n);

if(ans==-1) puts("oh,it's impossible~!!");

else printf("%d\n",(1<}

return 0;

}

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...