bzoj 3175: [Tjoi2013]攻击装置
2014-11-06 22:56
274 查看
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
000
100
Sample Output
4HINT
100%数据 N<=200二分图。。写个dinic竟然T了,赶紧改成匈牙利
#include<iostream> #include<cstdio> #include<cstring> using namespace std; struct map { int s,t; int next; }a[1000001]; int map[201][201]; int head[100001]; int edge; bool v[100001]; int lk[100001]; int ans; int n; inline void add(int s,int t) { a[edge].next=head[s]; head[s]=edge; a[edge].s=s; a[edge].t=t; } inline bool find(int d) { int i; for(i=head[d];i!=0;i=a[i].next) { int t=a[i].t; if(!v[t]) { v[t]=true; if(lk[t]==0||find(lk[t])) { lk[t]=d; return true; } } } return false; } inline int work() { int i,j; for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { if(i%2==1&&j%2==1||i%2==0&&j%2==0) { int d=(i-1)*n+j; memset(v,0,sizeof(v)); if(find(d)) ans++; } } } return ans; } int mx[8]={-1,-2,-2,-1,1,2,2,1}; int my[8]={-2,-1,1,2,2,1,-1,-2}; int main() { string x; scanf("%d",&n); int i,j; int sum=0; for(i=1;i<=n;i++) { cin>>x; for(j=1;j<=n;j++) { map[i][j]=x[j-1]-'0'; if(map[i][j]==0) sum++; } } int k; int xx,yy; for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { if(map[i][j]==1) continue; int d=(i-1)*n+j; for(k=0;k<=7;k++) { xx=i+mx[k]; yy=j+my[k]; if(xx>=1&&xx<=n&&yy>=1&&yy<=n) { if(map[xx][yy]==1) continue; int dd=(xx-1)*n+yy; /*edge++; add(d,dd,1); edge++; add(dd,d,1);*/ if(i%2==1&&j%2==1||i%2==0&&j%2==0) { edge++; add(d,dd); } else { edge++; add(dd,d); } } } } } work(); printf("%d\n",sum-ans); return 0; }
相关文章推荐
- 【bzoj3175】【TJOI2013】【攻击装置】【二分图最大独立集】
- BZOJ 3175: [Tjoi2013]攻击装置( 匈牙利 )
- BZOJ_3175_[Tjoi2013]攻击装置_二分图匹配
- bzoj3175[Tjoi2013] 攻击装置
- 【最大独立集】BZOJ3175- [Tjoi2013]攻击装置
- [最小割]BZOJ 3175—— [Tjoi2013]攻击装置
- BZOJ 3175: [Tjoi2013]攻击装置
- BZOJ 3175 [Tjoi2013]攻击装置 二分图极大点独立集
- bzoj3175 [Tjoi2013]攻击装置 二分图匹配
- BZOJ3175: [Tjoi2013]攻击装置
- bzoj 3175: [Tjoi2013]攻击装置 最大独立集 网络流
- BZOJ 3175: [Tjoi2013]攻击装置
- bzoj 3175: [Tjoi2013]攻击装置
- [bzoj 3175--TJOI2013]攻击装置
- BZOJ 3175 Tjoi2013 攻击装置 二分图最大匹配
- BZOJ3175 Tjoi2013 攻击装置(二分图匹配)
- BZOJ3175 Tjoi2013 攻击装置(二分图匹配)
- 【bzoj3175】 TJOI2013攻击装置 二分图最大独立集
- [二分图最大独立集][BZOJ 3175][TJOI 2013]攻击装置
- 【bzoj4808】马&&【bzoj3175】[Tjoi2013]攻击装置