题目描述

题目大意

给定一个n×mn×mn\times m的矩阵,对于每一个非障碍的点,可以占领一步可以达到的点(多个), 先给定行动规则(即走法),问最多能有多少个互不攻击

解题思路

最多互不攻击=最大独立集=非障碍格数-最大匹配=非障碍格数-最大流
我们只需要把所有点拆分成入点和出点

入点与源点相连
出点与汇点相连
一个点的入点和它可以到达的那个店的出点连边

再求出所有非障碍的点,跑一边dinicdinicdinic,就行啦!

代码

#include<queue>
#include<cstdio>
#include<cstring>
#define M 160001
#define id(i,j) (~-i)*m+j
using namespace std;int n,m,tot,l[M],d[M],S,T,ans,R,C,dx[4],dy[4],sum;char c[51][51];
struct node{int next,to,w;}e[M<<1];
void add(int u,int v,int w)
{e[tot]=(node){l[u],v,w};l[u]=tot++;e[tot]=(node){l[v],u,0};l[v]=tot++;return;
}
bool bfs()
{memset(d,-1,sizeof(d));queue<int>q;d[S]=0;q.push(S);while(q.size()){int x=q.front();q.pop();for(int i=l[x];~i;i=e[i].next){int y=e[i].to;if(e[i].w&&d[y]==-1){d[y]=d[x]+1;q.push(y);if(y==T) return true;}}}return false;
}
int dfs(int x,int flow)
{if(x==T||!flow) return flow;int rest=0,f=0;for(int i=l[x];~i;i=e[i].next){int y=e[i].to;if(d[x]+1!=d[y]||!e[i].w)continue;f=dfs(y,min(flow-rest,e[i].w));if(!f) {d[y]=-1;continue;}e[i].w-=f;rest+=f;e[i^1].w+=f;if(rest==flow) return flow;}return rest;
}
void dinic()
{while(bfs()) ans+=dfs(S,2147483647);return;
}
int main()
{memset(l,-1,sizeof(l));scanf("%d%d%d%d\n",&n,&m,&R,&C);S=(n*m)<<1|1;T=S+1;dx[0]=-R;dx[1]=-R;dx[2]=-C;dx[3]=-C;dy[0]=-C;dy[1]=C;dy[2]=-R;dy[3]=R;for(int i=1;i<=n;i++){scanf("%s",c[i]+1);for(int j=1;j<=m;j++){add(S,id(i,j),1);add(id(i,j)+n*m,T,1);if(c[i][j]=='.'){sum++;for(int k=0;k<4;k++){int nx=i+dx[k],ny=j+dy[k];if(c[nx][ny]=='x') continue;if(nx<1||ny<1||nx>n||ny>m) continue;add(id(i,j),id(nx,ny)+n*m,1);}}}}dinic();printf("%d",sum-ans);
}

【最大流,最大匹配,最大独立集】2018.6.18 【2018提高组】模拟C组 T3 沙耶的玩偶相关推荐

  1. 【一周头条盘点】中国软件网(2018.6.18~2018.6.22)

    每一个企业级应用的人都置顶了中国软件网 中国软件网为你带来最新鲜的行业干货 趋势洞察 ========= 思科Maciej Kranz:区块链是我们这个时代的四项颠覆性技术之一 思科战略创新集团副总裁 ...

  2. JZOJ5857 【NOIP提高组模拟A组2018.9.8】没有上司的舞会

    题目 Description "那么真的有果尔德施坦因这样一个人?"他问道. "是啊,有这样一个人,他还活着.至于在哪里,我就不知道了." "那么那个 ...

  3. 学习手记(2018/7/14~2018/7/18)——快乐纪中

    2018/7/14:普通的纪中一天 儿子兄弟表示法 将一颗多叉树转换为二叉树的方法,左子节点连原树的第一个儿子,右子节点连原树的右边的兄弟 适用范围:树形dp 数位dp常见方法 状态压缩 分类讨论 记 ...

  4. 训练日志 2018.10.18

    花了一周时间把之前学过的算法和题重新看了一下,重新架构了一下知识体系,对 DP 和搜索有了更深刻的认识,这周正式开始图论内容,抽空再将搜索的优化和 A* 算法学习一下 2018.10.18

  5. 暑期训练日志----2018.8.18

    训练第20天. 上午整理了一下区间DP的知识点和例题,中午补了补线性DP,做了做洛谷上的题,抽时间系统化的整理一下线性DP 家里有事要回济南,两天时间基本废掉了...不知道还能不能在假期结束前看完DP ...

  6. 2018.03.18 临汾市游记

    2018.03.18 临汾市游记 写在前面 首先,Capella 极其擅长记流水账,包括本文. 其次,本文中所有并列关系的人名,均按字典序排列. 背景 临汾一中 Mr_Wolfram 和 poorpo ...

  7. 首发! 2018年1-8月手机行业发展白皮书,附59页完整PDF

    首发 |2018年1-8月手机行业发展白皮书  数据周期: 2018年1-8月 数据来源: 友盟+全域数据.凯度消费者指数 涉及品牌: 苹果/华为/荣耀/OPPO/vivo/360/一加/锤子/魅族等 ...

  8. 【一周头条盘点】中国软件网(2018.12.10~2018.12.14)

    每一个企业级应用的人都置顶了中国软件网 中国软件网为你带来最新鲜的行业干货 一周热点 青云QingCloud容器管理平台KubeSphere开启公测 近日,企业级全栈云ICT服务商青云QingClou ...

  9. 2018年河北单招计算机试题,2018年河北单招英语模拟试题一【含答案】.doc

    2018年河北单招英语模拟试题一[含答案].doc (9页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 7.9 积分 2018年河北单招英语模拟试题一[ ...

  10. JZOJ 5814. 【NOIP提高A组模拟2018.8.14】 树

    梦游中的你来到了一棵 N 个节点的树上. 你一共做了 Q 个梦, 每个梦需要你从点 u 走到点 v 之后才能苏醒, 由于你正在梦游, 所以每到一个节点后,你会在它连出去的边中等概率地选择一条走过去, ...

最新文章

  1. dispatch js实现_详解vuex中action何时完成以及如何正确调用dispatch的思考
  2. linux查看全连接队列大小,[TimLinux] TCP全连接队列满
  3. Oracle Schema Objects——Index
  4. 前端路由简介以及vue-router实现原理
  5. 添加sudo权限脚本
  6. 给采购凭证分配合作伙伴方案
  7. 我的 Vue.js 学习日记 (七) - 事件与修饰符
  8. 企业信息门户与办公自动化的集成应用
  9. ElasticSearch中压缩算法LZ4的使用
  10. 括号匹配深度,交错01字符串(一个类型代码)
  11. OC 5217欧创芯原装芯片一款连续电感电流导通模 式的降压型 LED 恒流驱动器,SOT23-5 封装
  12. 使用U盘制作启动盘重装mac系统
  13. (详细步骤)申请twitter api
  14. Springboot毕设项目博客系统anx64(java+VUE+Mybatis+Maven+Mysql)
  15. 大数据数仓建模(3)
  16. 六、React(Component)
  17. 4月22日丨【云数据库技术沙龙】技术进化,让数据更智能
  18. 一图解说JAVA的项目结构
  19. k宝无法连接计算机,农行二代K宝插电脑上显示无法识别怎么办? 驱动已正确安装了,电脑的USB接口插其他U盘什么的都正常的...
  20. cache 是什么意思 它包括的L1,L2,L3分别是什么东西

热门文章

  1. Ubuntn16.04 迅雷安装
  2. 拍森python百度百科_python对拍_python 拍牌_拍森python - 云+社区 - 腾讯云
  3. delphi的时间Ttime,Tdatetime的信息
  4. python将输入的字符串反转过来_如何实现python字符串反转?
  5. 18个谷歌搜索技巧,让你受用终身
  6. flutter学习之基础组件(一)
  7. 如何优化前端页面的LCP?
  8. android 横向竖排文字,GitHub - tung666/AdvancedTextView: 一个增强的TextView库。可以实现文字两端对齐,文字竖排,以及自定义选择文字后的弹出菜单。...
  9. RemoveWGA升级了
  10. PythonMagick将png转ico