BZOJ3175 Tjoi2013 攻击装置(二分图匹配)
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
3
010
000
100
Sample Output
4
HINT
100%数据 N<=200
这……这不是裸的二分图最大点独立集么……匈牙利水过……
/**************************************************************
Problem: 3175
User: geng4512
Language: C++
Result: Accepted
Time:840 ms
Memory:9240 kb
****************************************************************/
#include<cstdio>
#define MAXN 40005
#define MAXM 1000005
struct node { int v, nxt; }e[MAXM];
int n, ecnt, Adj[MAXN], cnt, dd[8][2] = {-1, -2, -1, 2, -2, -1, -2, 1, 1, 2, 1, -2, 2, 1, 2, -1}, c[MAXN], tag, vis[MAXN];
inline void Add(int u, int v) {
++ ecnt; e[ecnt].v = v; e[ecnt].nxt = Adj[u]; Adj[u] = ecnt;
}
char s[300][300];
int dfs(int u) {
vis[u] = tag;
for(int i = Adj[u]; i; i = e[i].nxt)
if(tag != vis[e[i].v]) {
vis[e[i].v] = tag;
if(!c[e[i].v] || dfs(c[e[i].v])) {
c[u] = e[i].v;
c[e[i].v] = u;
return 1;
}
}
return 0;
}
inline int Hungary() {
int ans = 0;
for(int i = 1; i < n*n; ++ i) tag = i, ans += dfs(i);
return ans;
}
int main() {
scanf("%d", &n);
for(int i = 0; i < n; ++ i)
scanf("%s", s[i]);
for(int i = 0; i < n; ++ i) {
for(int j = 0; j < n; ++ j) {
if(s[i][j]-'0') ++ cnt;
else if((i+j)&1){
for(int k = 0; k < 8; ++ k) {
int x = i + dd[k][0], y = j + dd[k][1];
if(x < 0 || x >= n || y < 0 || y >= n || s[x][y] == '1') continue;
Add(i*n+j, x*n+y);
}
}
}
}
int ans = n*n-Hungary()-cnt;
printf("%d\n", ans);
return 0;
}
BZOJ3175 Tjoi2013 攻击装置(二分图匹配)的更多相关文章
- 【BZOJ 3175】 3175: [Tjoi2013]攻击装置(二分图匹配)
3175: [Tjoi2013]攻击装置 Description 给定一个01矩阵,其中你可以在0的位置放置攻击装置.每一个攻击装置(x,y)都可以按照“日”字攻击其周围的 8个位置(x-1,y-2) ...
- BZOJ3175[Tjoi2013]攻击装置——二分图最大独立集
题目描述 给定一个01矩阵,其中你可以在0的位置放置攻击装置.每一个攻击装置(x,y)都可以按照“日”字攻击其周围的 8个位置(x-1,y-2),(x-2,y-1),(x+1,y-2),(x+2,y- ...
- BZOJ3175:[TJOI2013]攻击装置(二分图最大独立集)
Description 给定一个01矩阵,其中你可以在0的位置放置攻击装置.每一个攻击装置(x,y)都可以按照“日”字攻击其周围的 8个位置(x-1,y-2),(x-2,y-1),(x+1,y-2), ...
- [TJOI2013] 攻击装置 - 二分图匹配
给定 \(N \times N\) 棋盘,某些格子是障碍,问可以放置的互不侵犯的马的个数 黑白染色后建立二分图,求最大独立集 = 总点数 - 最大匹配数 注意把反边也连上会WA掉(脑抽一发血) #in ...
- bzoj4808: 马 & bzoj3175: [Tjoi2013]攻击装置 (黑白染色+最小割)
bzoj4808: 马 & bzoj3175: [Tjoi2013]攻击装置 题目:传送门 简要题意: 和n皇后问题差不多,但是这里是每个棋子走日子,而且有些格子不能放棋子.求最多能放多少个棋 ...
- BZOJ3175: [Tjoi2013]攻击装置
题解: 最大点独立集...好像水过头了... 不过发现我二分图好像忘完了!!! 代码: #include<cstdio> #include<cstdlib> #include& ...
- bzoj3175: [Tjoi2013]攻击装置&&4808: 马
终于知道为啥网络流这么受欢迎了. 其实就是构个图模板一下的事儿,比较好打是吧. 然后这题网络流黑白染色(其实感觉上匈牙利更加直接好想啊,但是实际上黑白染色给人感觉就是二分图) st连白而ed连黑,流量 ...
- BZOJ_3175_[Tjoi2013]攻击装置_二分图匹配
BZOJ_3175_[Tjoi2013]攻击装置_二分图匹配Description 给定一个01矩阵,其中你可以在0的位置放置攻击装置.每一个攻击装置(x,y)都可以按照“日”字攻击其周围的 8个位置 ...
- 【洛谷】4304:[TJOI2013]攻击装置【最大点独立集】【二分图】2172: [国家集训队]部落战争【二分图/网络流】【最小路径覆盖】
P4304 [TJOI2013]攻击装置 题目描述 给定一个01矩阵,其中你可以在0的位置放置攻击装置. 每一个攻击装置(x,y)都可以按照“日”字攻击其周围的8个位置(x-1,y-2),(x-2,y ...
随机推荐
- linux文件上传
租了个服务器,要把自己打的war包打上去发布,服务器是linux的(本机是mac).以前都是用wget命令,把需要上传的东西先放到github上面再在服务器上用wget命令下载.最近不知道什么原因,w ...
- xml 中转意字符&\/使用方法
所有 XML 元素都须有关闭标签 在 HTML,经常会看到没有关闭标签的元素: <p>This is a paragraph <p>This is another paragr ...
- JQuery之正则表达式
1.定义正则表达式 /.../ 用于定义正则表达式 /.../g 表示全局匹配 /.../i 表示不区分大小写 /.../m 表示多行匹配 2.匹配正则表达式 非全局模式,不分组 var patte ...
- java length size
1 java中的length属性是针对数组说的,比如说你声明了一个数组,想知道这个数组的长度则用到了length这个属性. 2 java中的length()方法是针对字符串String说的,如果想看这 ...
- QT报错Error processing
执行命令:qmake modbus_ups_mlrl.pro modbus_ups_mlrl.pro文件内容: TEMPLATE = vclib CONFIG +=qt debug thread QT ...
- DIOCP之数据接收事件
一.不引用编码器与解码器的情况下(ECHO的DEMO) 类TIOCPtcpclient,接收服务器的数据事件:OnRecvBuffer 类TDiocpTcpServer,接收客户端数据事件:OnRec ...
- servletconfig和servletContext的区别
1.servletConfig: 在Servlet的配置文件中,可以使用一个或多个<init-param>标签为servlet配置一些初始化参数.(配置在某个servlet标签或者整个we ...
- RESULT:0x80029C4A (TYPE_E_CANTLOADLIBRARY))
无法将类型为"Microsoft.Office.Interop.Excel.ApplicationClass"的 COM 对象强制转换为接口类型"Microsoft.Of ...
- .NET Remoting获取配置通道:
接上文: public static string ChannelManagerUrl { get { retu ...
- ORACLE服务端详细安装步骤(配图解)
ORACLE服务端的安装及配置 l 将下载的安装包解压缩,双击[setup.exe]文件,系统检查监听参数,耐心等待,完成后出现如下界面,电子邮件可不填,"我希望..."建议不勾选 ...