TYVJ1035 棋盤覆蓋

2021-09-09 01:44:41 字數 997 閱讀 4320

n*m的棋盤,某些格仔進製放棋子,

最多能在棋盤上放置多少塊1*2的骨牌,

骨牌不能出界,相互不能重疊。

乙個骨牌佔兩個格仔,將棋盤黑白染色,二分圖最大匹配關鍵,

找0要素和1要素:這裡1要素是每個格仔只能被一塊骨牌覆蓋,0要

素不同色的格仔不能被同一塊骨牌所覆蓋。所以根據不同顏色劃分

為2個部分,可以被同一塊骨牌覆蓋的兩點之間連線,由此可以形

成一張二分圖,然後其最大匹配數即最多能放置的骨牌數。

wa點:

左部節點集、右部節點集弄混,原因是黑白節點的判斷標準弄錯

(不能按照格仔序號的奇偶性,應該是行數+列數的奇偶性)。

#define ll long long

using namespace std;

const int n=10010;

const int m=10010*4;

int next[m];

int ver[m];

int head[n];

int tot;

void add(int x,int y)

bool visit[n];

int match[n];

bool dfs(int x)}}

return 0;

}bool mark[n];

bool judge(int x,int y,int n)

int main()

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

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

int ans=0;

for(int i=1;i<=n;i++)//遍歷每乙個左部節點,看能不能找到其在右邊的對應匹配節點

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

if((i+j)%2==0)

cout

棋盤覆蓋問題

source code include include include using namespace std const int n 1024 int board n n count void cover int sx,int sy,int cx,int cy,int size,int cx1,i...

棋盤覆蓋演算法

在乙個2k 2k個方格組成的棋盤中,恰有乙個方格與其他方格不同,稱該方格為一特殊方格,且稱該棋盤為一特殊棋盤,顯然特殊方格在棋盤上出現的位置有4k種情形。因而對任何k 0,有4k種不同的特殊棋盤。特殊方格必位於4個較小子棋盤之一中,其餘3個子棋盤中無特殊方格。為了將這3個無特殊方格的子棋盤轉化為特殊...

棋盤覆蓋問題

問題 在乙個2k 2k k 0 個方格組成的棋盤中,恰有乙個方格與其他方格不同,稱該方格為特殊方格。顯然,特殊方格在棋盤中可能出現的位置有4k種,因而有4k種不同的棋盤,圖4.10 a 所示是k 2時16種棋盤中的乙個。棋盤覆蓋問題 chess cover problem 要求用圖4.10 b 所示...