Tjoi2013 攻擊裝置

2022-07-13 20:39:31 字數 1199 閱讀 8245

description

給定乙個01矩陣,其中你可以在0的位置放置攻擊裝置。每乙個攻擊裝置(x,y)都可以按照「日」字攻擊其周圍的 8個位置(x-1,y-2),(x-2,y-1),(x+1,y-2),(x+2,y-1),(x-1,y+2),(x-2,y+1), (x+1,y+2),(x+2,y+1)

求在裝置互不攻擊的情況下,最多可以放置多少個裝置。

input

第一行乙個整數n,表示矩陣大小為n*n。接下來n行每一行乙個長度n的01串,表示矩陣。

output

乙個整數,表示在裝置互不攻擊的情況下最多可以放置多少個裝置。

sample input

3010

000100

sample output

4hint

100%資料 n<=200

題目要求最大獨立集。

我們有:

最大獨立集=總點數−最大匹配數

於是只要求最大匹配數即可。

於是就丟給了匈牙利。。。

#include#include#includeusing namespace std;

const int dx[8]=;

const int dy[8]=;

const int maxn=202;

const int maxp=maxn*maxn/2;

const int maxm=8*20005;

int id[maxn][maxn],fir[maxp],f[maxp];

int n,n1,n2,ce;

char str[maxn];

bool b[maxn][maxn],v[maxp];

struct edge

edge(int x,int y,int next):x(x),y(y),next(next){}

}e[maxm];

inline void add_edge(int x,int y)

bool dfs(int x)

}return 0;

}int main()

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

}memset(f,0,sizeof f);

int k=0;

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

printf("%d\n",n1+n2-k);

return 0;

}

TJOI2013 攻擊裝置

time limit 10 sec memory limit 128 mb submit 1326 solved 636 submit status discuss 給定乙個01矩陣,其中你可以在0的位置放置攻擊裝置。每乙個攻擊裝置 x,y 都可以按照 日 字攻擊其周圍的 8個位置 x 1,y 2 ...

TJOI2013 攻擊裝置(網路流,最小割)

網路流被hbx吊起來打 考慮一下這個走法是不是和象棋中馬的走法一模一樣 廢話 那麼顯然我每一次移動是走三次,如果將棋盤二分圖染色一下,不就是每一次只能走到另乙個顏色的嗎?然後我們題目中求的是最多可以放置多少個裝置,不能夠攻擊,也就是乙個裸的二分圖最小割?直接最大流求一下做個減法就沒了。include...

TJOI2013 松鼠聚會

題目描述 草原上住著一群小松鼠,每個小松鼠都有乙個家。時間長了,大家覺得應該聚一聚。但是草原非常大,松鼠們都很頭疼應該在誰家聚會才最合理。每個小松鼠的家可以用乙個點x,y表示,兩個點的距離定義為點 x,y 和它周圍的8個點 x 1,y x 1,y x,y 1 x,y 1 x 1,y 1 x 1,y ...