bzoj3175: [tjoi2013]攻擊裝置
給定乙個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)
求在裝置互不攻擊的情況下,最多可以放置多少個裝置。
第一行乙個整數n,表示矩陣大小為n*n。接下來n行每一行乙個長度n的01串,表示矩陣。
乙個整數,表示在裝置互不攻擊的情況下最多可以放置多少個裝置。
3010
000100
4100%資料 n<=200
題目要求最大獨立集。
我們有:
$$\text=\text-\text$$
於是只要求最大匹配數即可。
於是就丟給了匈牙利。。。
注意:因為$a$匹配了$b$,$b$就會匹配$a$。
所以最後的最大匹配數需要除以$2$。
附**:
#include#include#include#include#define maxn 210using namespace std;
const int fx[4]=;
const int fy[4]=;
int n,m=0,t,c=1;
int head[maxn*maxn],vis[maxn*maxn],f[maxn*maxn],id[maxn][maxn];
struct edgea[maxn*maxn*20];
inline int read()
while(c>='0'&&c<='9')
return date*w;
}inline void add(int x,int y)
inline bool check(int x,int y)
bool find(int x)
} return false;
}void work()
printf("%d\n",m-ans/2);
}void init()
} for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(id[i][j])
for(int k=0;k<4;k++)
}int main()
Bzoj 3175 Tjoi2013 攻擊裝置
給定乙個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 求在裝置互不攻擊的情況下,最多可以放置多少個裝置。第一...
BZOJ3175 Tjoi2013 攻擊裝置
給 定乙個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 求在裝置互不攻擊的情況下,最多可以放置多少個裝置。第...
BZOJ5334 Tjoi2018 數學計算
time limit 10 sec memory limit 256 mb submit 234 solved 155 小豆現在有乙個數x,初始值為1.小豆有q次操作,操作有兩種型別 1 m x x m 輸出 x mod 2 pos x x 第pos次操作所乘的數 保證第pos次操作一定為型別1,對...