传送门

看到棋盘先黑白染色冷静一下

然后发现...攻击的时候同种颜色不会相互攻击

这样就是个网络流经典套路了,关于这个套路我以前好像写过几题,那边有解释一下:传送门

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<queue>
using namespace std;
typedef long long ll;
inline int read()
{
int x=,f=; char ch=getchar();
while(ch<''||ch>'') { if(ch=='-') f=-; ch=getchar(); }
while(ch>=''&&ch<='') { x=(x<<)+(x<<)+(ch^); ch=getchar(); }
return x*f;
}
const int N=1e6+,INF=1e9,xx[]={,,,,-,-,-,-},yy[]={,,-,-,-,-,,};
namespace Dinic {
int fir[N],from[N<<],to[N<<],val[N<<],cntt=;
int S,T,dep[N],Fir[N];
queue <int> Q;
inline void add(int a,int b,int c)
{
from[++cntt]=fir[a]; fir[a]=cntt;
to[cntt]=b; val[cntt]=c;
from[++cntt]=fir[b]; fir[b]=cntt;
to[cntt]=a; val[cntt]=;
}
bool BFS()
{
for(int i=;i<=T;i++) Fir[i]=fir[i],dep[i]=;
Q.push(S); dep[S]=;
while(!Q.empty())
{
int x=Q.front(); Q.pop();
for(int i=fir[x];i;i=from[i])
{
int &v=to[i]; if(dep[v]||!val[i]) continue;
dep[v]=dep[x]+; Q.push(v);
}
}
return dep[T]>;
}
int DFS(int x,int mxfl)
{
if(x==T||!mxfl) return mxfl;
int fl=,res;
for(int &i=Fir[x];i;i=from[i])
{
int &v=to[i]; if(dep[v]!=dep[x]+||!val[i]) continue;
if( res=DFS(v,min(mxfl,val[i])) )
{
mxfl-=res; val[i]-=res;
fl+=res; val[i^]+=res;
if(!mxfl) break;
}
}
return fl;
}
int dinic() { int res=; while(BFS()) res+=DFS(S,INF); return res; }
}
int n,a[][],id[][],tot;
char s[];
int main()
{
n=read();
for(int i=;i<=n;i++)
{
scanf("%s",s+); int len=strlen(s+);
for(int j=;j<=len;j++)
{
a[i][j]=(s[j]=='');
if(!a[i][j]) id[i][j]=++tot;
}
}
Dinic::T=tot+;
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
{
if(a[i][j]) continue;
if((i+j)&) { Dinic::add(id[i][j],Dinic::T,); continue; }
Dinic::add(Dinic::S,id[i][j],);
for(int k=;k<;k++)
{
int px=i+xx[k],py=j+yy[k];
if(px<||px>n||py<||py>n||a[px][py]) continue;
Dinic::add(id[i][j],id[px][py],INF);
}
}
printf("%d\n",tot-Dinic::dinic());
return ;
}

P4304 [TJOI2013]攻击装置的更多相关文章

  1. P4304 [TJOI2013]攻击装置 最小割

    $ \color{#0066ff}{ 题目描述 }$ 给定一个01矩阵,其中你可以在0的位置放置攻击装置. 每一个攻击装置(x,y)都可以按照"日"字攻击其周围的8个位置(x-1, ...

  2. 洛谷P4304 [TJOI2013]攻击装置 题解

    题目链接: https://www.luogu.org/problemnew/show/P4304 分析: 最大独立集 最大独立集=总点数-最大匹配数 独立集:点集,图中选一堆点,这堆点两两之间没有连 ...

  3. 洛咕 P4304 [TJOI2013]攻击装置

    把坐标按照(x+y)%2染色可以发现这是个二分图 二分图最大独立集=点数-最大匹配 于是就是个算匹配的傻逼题了 // luogu-judger-enable-o2 #include<bits/s ...

  4. 洛谷P4304 TJOI2013 攻击装置 (二分图匹配)

    题目大意:一个矩阵,一些点被拿掉,在棋盘上马走日,马之间不能落在同一点,求最多放几匹马. 采用对矩阵黑白染色,画个图可以发现:马可以走到的位置和他所处的位置颜色不同,将马和他可以走到的位置连边,最多可 ...

  5. 【洛谷】4304:[TJOI2013]攻击装置【最大点独立集】【二分图】2172: [国家集训队]部落战争【二分图/网络流】【最小路径覆盖】

    P4304 [TJOI2013]攻击装置 题目描述 给定一个01矩阵,其中你可以在0的位置放置攻击装置. 每一个攻击装置(x,y)都可以按照“日”字攻击其周围的8个位置(x-1,y-2),(x-2,y ...

  6. BZOJ3175: [Tjoi2013]攻击装置

    题解: 最大点独立集...好像水过头了... 不过发现我二分图好像忘完了!!! 代码: #include<cstdio> #include<cstdlib> #include& ...

  7. BZOJ 3175: [Tjoi2013]攻击装置( 匈牙利 )

    黑白染成二分图, 然后不能同时选的就连边, 最大匹配数为m, t为不能放的数目, 则题目所求最大点独立集为 n*n-m-t -------------------------------------- ...

  8. 【BZOJ4808/3175】马/[Tjoi2013]攻击装置 最小割

    [BZOJ4808]马 Description 众所周知,马后炮是中国象棋中很厉害的一招必杀技."马走日字".本来,如果在要去的方向有别的棋子挡住(俗称"蹩马腿" ...

  9. 【BZOJ 3175】 3175: [Tjoi2013]攻击装置(二分图匹配)

    3175: [Tjoi2013]攻击装置 Description 给定一个01矩阵,其中你可以在0的位置放置攻击装置.每一个攻击装置(x,y)都可以按照“日”字攻击其周围的 8个位置(x-1,y-2) ...

随机推荐

  1. Spring Boot教程(三十二)多数据源配置与使用(2)

    Spring-data-jpa支持 对于数据源的配置可以沿用上例中DataSourceConfig的实现. 新增对第一数据源的JPA配置,注意两处注释的地方,用于指定数据源对应的Entity实体和Re ...

  2. HTML和CSS 入门系列(一):超链接、选择器、颜色、盒模式、DIV布局、图片

    一.超链接 二.CSS选择器 CSS的全称叫做: Cascading Style Sheets 级联样式表的缩写. 2.1 类型选择器 2.2 派生选择器 2.3 伪类选择器 <style &g ...

  3. web 多屏互动显示方案

    1 基于 local storage 实现的信息传递 相关插件 lsbridge.js https://github.com/krasimir/l... 且项目中有非常简单易懂的示例你需要了解的一些关 ...

  4. MySQL 获取格林时间

    SELECT *FROM 表面WHERE DATE_SUB( NOW( ), INTERVAL 3 MINUTE ) <= CONVERT_TZ( 时间字段, @@SESSION.time_zo ...

  5. 记一次elastic-job使用

    当当的elastic-job定时任务 业务场景是定时从微信取accesstoken和jsticket,因为都只有7200秒的有效时间,所以设置了定时任务,定时将得到的数据存到redis缓存中 问题1: ...

  6. TP5 未定义变量:XXX

    TP5开发模式下报错级别非常高,哪怕变量未定义都直接抛出异常 应用公共函数文件  路径: application/common.php 在common.php文件写入 // 异常错误报错级别, err ...

  7. leetcode-easy-math-204 Count Primes-NO

    mycode     time limited class Solution(object): def countPrimes(self, n): """ :type n ...

  8. RF-创建一个自定义关键字库

    仓库自定义库 这里以Selenium2Library库进行举例说明: 编写一个自定义仓库类(与库文件夹名一致),继承关键字类,指定范围和版本即可. 需要声明__init__. import os fr ...

  9. 全面解读php-常量及数据类型

    本文主要讲解字符串的定义方式,数据类型和常量的相关内容. 一.字符串的定义方式 1.字符串的定义方式除了单双引号外,还有一种叫 heredoc 和 newdoc  在我们需要定义很长一段儿字符串的时候 ...

  10. cors 预请求

    1.CORS的其他限制 默认允许的方法只有:GET.HEAD.POST默认允许的Content-Type:text/plain.multipart/form-data.applicaton/x-www ...