P3355 騎士共存問題

2021-10-02 10:20:59 字數 1309 閱讀 3844

題目描述

在乙個 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個障礙 ...