hdu3364 Lanterns 高斯消元

2021-07-03 04:54:01 字數 1073 閱讀 3448

//有m個開關,n個燈泡,每個開關可以控制不同的燈泡(可以有多個)

//給定n個燈泡的亮暗情況,問有多少種開關的情況

//用a[i][j]表示第j個開關對第i個燈泡能否控制,1為能,0為否

//用高斯消元,ans = 2^(var-k) ,(var-k)為自由變數數

#include

#include

#include

using namespace std ;

const int maxn =  60 ;

#define abs(a) (a > 0 ? a : -a)

typedef __int64 ll ;

int a[maxn][maxn] ;

int b[maxn][maxn] ;

int x[maxn] ;

int free_x[maxn] ;

int  equ , var;

int gauss()

for(int i = k+1 ; i < equ ;i++)

}for(int i = k ;i < equ ;i++)

if(a[i][col] != 0)return -1 ;//無解

return var - k ;

}int main()

}int q ;

for(int i = 0 ;i < equ ;i++)

memcpy(b[i] , a[i] , sizeof(a[i])) ;

scanf("%d" , &q) ;

printf("case %d:\n" , ++cas) ;

while(q--)

for(int i = 0 ;i < equ;i++)

memcpy(a[i] , b[i] , sizeof(b[i])) ;

int sum = gauss() ;

if(sum < 0)

ll ans = 1;

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

ans*=2;

printf("%i64d\n" , ans) ;}}

return  0 ;

}

高斯消元求方案數 HDU3364

難點在於構建方程組 題目大意 有 n 盞燈,m 個開關,每個開關可以控制多盞燈,每盞燈可以被多盞開關控制。開 始每盞燈都是開閉狀態,給定每盞燈的最終狀態,問有多少種方案可以到達。解題思路 對於每一盞燈,可以列出乙個方程,這樣就可以列出 n 個方程,有 m 個未知量。從 而構成乙個 n m 的矩陣,對...

hdu 3915 高斯消元

這道題目是和博弈論掛鉤的高斯消元。本題涉及的博弈是nim博弈,結論是 當先手處於奇異局勢時 幾堆石子數相互異或為0 其必敗。思路在這裡,最後由於自由變元能取1 0兩種狀態,所以,最終答案是2 k,k表示自由變元的個數。include include include include include i...

HDU 5755 高斯消元

題意 給出乙個模3意義下的矩陣,每次選中乙個元素就可以使得自身 2,上下左右元素 1。求所有元素變成0的一種解。o nm 3 怎麼會不炸!怎麼會不炸!好吧就是不炸,可能在消元的時候0比較多吧 可以為什麼不用列舉自由元呢?不是很懂這個資料 直接按照上下左右自身的元素對自己的貢獻建立方程組暴力消元,遇到...