給定乙個 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...