AcWing 378 騎士放置 題解

2022-04-29 21:00:09 字數 994 閱讀 8802

給定乙個 n*m 的棋盤,有一些格仔禁止放棋子。

問棋盤上最多能放多少個不能互相攻擊的騎士(西洋棋的「騎士」,類似於中國象棋的「馬」,按照「日」字攻擊,但沒有中國象棋「別馬腿」的規則)。

樣例

輸入樣例

2 3 0

輸出樣例

4

(二分圖——最大獨立集) o(n

∗m

)o(n*m)

o(n∗m)

思路:通過塗色法(棋子位置和除棋子可到位置變黑色,其餘不變)發現,黑色與白色有公共邊,即可使用二分圖求解

時間複雜度

o (n

∗m

)o(n*m)

o(n∗m)

參考文獻

y總的課+《演算法競賽高階指南》

c++ **

#include

#define x first

#define y second

using

namespace std;

typedef pair<

int,

int> pii;

const

int maxn=

110;

pii match[maxn]

[maxn]

;bool g[maxn]

[maxn]

;int n,m,t,x,y,res;

bool st[maxn]

[maxn]

;int fx=

;int fy=

;bool

find

(int x,

int y)

;return

true;}

}return

false;}

intmain()

for(

int i=

1;i<=n;i++)}

} cout

}

AcWing 37 樹的子結構(python版)

輸入兩棵二叉樹a,b,判斷b是不是a的子結構。我們規定空樹不是任何樹的子結構。樣例樹a 樹b 返回 true 因為b是a的子結構。1 由於對於一棵樹的描述是給出其根節點,所以判斷一棵樹是否為另外一棵樹的子樹,首先就是判斷兩樹的根節點是否一致。在對比過程中,如果發現a樹的根節點和b樹的根節點不一致,則...

(37)除錯幫助

c 程式設計師有時會用到一種類似於標頭檔案保護的技術,以便有選擇地執行除錯 程式可以包含一些用於除錯的 但這些 只在開發程式時使用。當應用程式編寫完成準備發布時,要先遮蔽掉除錯 這種方法用到兩種預處理功能 assert和ndebug。assert是一種預處理巨集。所謂預處理巨集其實是乙個預處理變數,...

3 7學習筆記

debug模式 如何進入debug模式 執行主函式或者單元測試時,ctrl shift d,j 使用debug模式的目的 1.跟蹤程式是否走預期流程 2.檢視執行過程中某些變數值 debug常用快捷鍵 ctrl shift b 開啟 關閉斷點 ctrl alt b 開啟 跳過已存在的所有斷點 ctr...