題目描述
在乙個 n*n個方格的西洋棋棋盤上,馬(騎士)可以攻擊的棋盤方格如圖所示。棋盤上某些方格設定了障礙,騎士不得進入
對於給定的 n*n 個方格的西洋棋棋盤和障礙標誌,計算棋盤上最多可以放置多少個騎士,使得它們彼此互不攻擊
輸入格式
第一行有 2 個正整數n 和 m (1<=n<=200, 0<=m輸出格式
將計算出的共存騎士數輸出
題解:和p4304 [tjoi2013]攻擊裝置類似的題,這裡懶得寫了,雙倍經驗
ac**:
#pragma gcc optimize(2)
#include
#include
using
namespace std;
using
namespace __gnu_cxx;
#define ll long long
const
int maxn =
40000+50
;const
int maxm =
2e6+50;
const
int mod =
1e9+7;
const
int inf =
0x3f3f3f3f
;int n,m,s,t,tot=
1,head[maxn]
,to[maxm]
,nxt[maxm]
,w[maxm]
,h[maxn]
,a[205][
205]
;int dir[
2]=,
,,,,
,,};
inline
void
ade(
int u,
int v,
int ww)
inline
void
add(
int u,
int v,
int w)
inline
intbfs()
}}return h[t];}
inline
intdfs
(int x,
int f)}if
(!fl) h[x]=-
1;return fl;
}inline
intdinic()
signed
main()
}}}printf
("%d\n"
,n*n-m-
dinic()
);return0;
}
P3355 騎士共存問題
在乙個n n個方格的西洋棋棋盤上,馬 騎士 可以攻擊的棋盤方格如圖所示。棋盤上某些方格設定了障礙,騎士不得進入 對於給定的n n 個方格的西洋棋棋盤和障礙標誌,計算棋盤上最多可以放置多少個騎士,使得它們彼此互不攻擊 輸入格式 第一行有 2 個正整數n 和 m 1 n 200,0 m輸出格式 將計算出...
洛谷 P3355 騎士共存問題
給出一張邊長為n,有幾個障礙點的棋盤,問最多可以放幾個騎士使他們不互相攻擊.我們可以反過來考慮,先將棋盤放滿騎士,計算至少去掉幾個騎士.經過觀察,我們可以發現,相同顏色的格仔上的棋子無法相互攻擊,因此可以讓超級源點連想每乙個紅點,每乙個黃點連向超級匯點,流量均為一,表示將棋盤放滿,再將紅格仔向可以攻...
P3355 騎士共存問題 網路流
在乙個 n n個方格的西洋棋棋盤上,馬 騎士 可以攻擊的棋盤方格如圖所示。棋盤上某些方格設定了障礙,騎士不得進入 對於給定的 n n 個方格的西洋棋棋盤和障礙標誌,計算棋盤上最多可以放置多少個騎士,使得它們彼此互不攻擊 和方格取數一模一樣 只不過相鄰改成了日字 所有的權值都為1 主要要減去m個障礙 ...