题目链接:Cops And Roobers


直接建图,拆点最小割就好了,没什么难度。


AC代码:

#pragma GCC optimize("-Ofast","-funroll-all-loops")
#include<bits/stdc++.h>
//#define int long long
using namespace std;
const int inf=0x3f3f3f3f;
const int N=2e3+10,M=1e6+10;
const int dx[]={0,1,0,-1},dy[]={1,0,-1,0};
int n,m,c,h[N],s,t,val[N],base; char g[50][50];
int head[N],nex[M],to[M],w[M],tot=1;
inline void ade(int a,int b,int c){to[++tot]=b; nex[tot]=head[a]; w[tot]=c; head[a]=tot;
}
inline void add(int a,int b,int c){ade(a,b,c);  ade(b,a,0);}
inline int bfs(){queue<int> q;    q.push(s);  memset(h,0,sizeof h);   h[s]=1;while(q.size()){int u=q.front();   q.pop();for(int i=head[u];i;i=nex[i]){if(w[i]&&!h[to[i]]){h[to[i]]=h[u]+1;  q.push(to[i]);}}}return h[t];
}
int dfs(int x,int f){if(x==t) return f;   int fl=0;for(int i=head[x];i&&f;i=nex[i]){if(w[i]&&h[to[i]]==h[x]+1){int mi=dfs(to[i],min(w[i],f));w[i]-=mi,w[i^1]+=mi,fl+=mi,f-=mi;}}if(!fl)  h[x]=-1;return fl;
}
inline int dinic(){int res=0;while(bfs())  res+=dfs(s,inf);return res;
}
inline int id(int x,int y){return (x-1)*m+y;}
signed main(){cin>>m>>n>>c;   base=n*m;  t=base*2+1;for(int i=1;i<=n;i++)   scanf("%s",g[i]+1);for(int i=1;i<=c;i++)  scanf("%d",&val[i]);for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){for(int k=0;k<4;k++){int tx=i+dx[k],ty=j+dy[k];if(tx<1||ty<1||tx>n||ty>m) add(id(i,j)+base,t,inf);else   add(id(i,j)+base,id(tx,ty),inf);}if(g[i][j]=='.')  add(id(i,j),id(i,j)+base,inf);else if(g[i][j]=='B')    add(s,id(i,j)+base,inf);else   add(id(i,j),id(i,j)+base,val[g[i][j]-'a'+1]);}}int flow=dinic();if(flow==inf)    puts("-1");else   cout<<flow;return 0;
}

Cops And Roobers相关推荐

  1. 【最小割】Gym - 101982 - E - Cops And Roobers

    题目链接<http://codeforces.com/gym/240837> 题意: 给你一张地图,里面有一个小偷.要求建造一些围栏把小偷圈住,有些地方不可造围栏,有些地方可造,但代价不同 ...

  2. Gradle 命令行介紹和安裝教程

    Gradle 命令行 $ gradle -hUSAGE: gradle [option...] [task...]-?, -h, --help Shows this help message. -a, ...

  3. AT命令交互之-COPS选择营运商

    模块默认一般都可以自动搜网注册,比如移动的就注册到移动,联通的就注册到联通.但是在不同的国家多网覆盖的使用情况下,有时候就算使用了自动搜网注册网络,也会出现注册不上网络的现象,这时候就需要使用手动搜网 ...

  4. 4-AT命令交互之-COPS选择营运商

    模块默认一般都可以自动搜网注册,比如移动的就注册到移动,联通的就注册到联通.但是在不同的国家多网覆盖的使用情况下,有时候就算使用了自动搜网注册网络,也会出现注册不上网络的现象,这时候就需要使用手动搜网 ...

  5. 分布式系统因果一致性与COPS算法

    COPS是保序系统的集群(Clusters of Order Preserving System)的简称.在了解COPS之前,最好首先了解一下分布式系统CAC算法,从CAP-->CAC--> ...

  6. modem 指令:AT+COPS

    modem 每天学一个指令: AT+COPS 功能:用于选择运营网络.主要有2种选择方式: 1.手工模式(manual): 搜索应用程序指定的网络.如果成功,则进行注册. 2.自动模式(automat ...

  7. uva 361 - Cops and Robbers(凸包)

    题目中给出了n个cops和m个robbers和q个居民,如果一个居民在某三个cops围成的三角形中就是安全的,否则,如果在某三个robbers围成的三角形中,就是不安全的,不然就是neither. 思 ...

  8. UVA 361 Cops and Robbers(凸包应用)

    UVA 361 Cops and Robbers(凸包应用) http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemi ...

  9. 笔记 MIT6.824 Lecture 17: COPS, Causal Consistency

    目录 前言 一.geo-replication 1.1 Spanner 1.2 Memchche 1.3 新的需求 二.预备方案One 三.预备方案Two 四.COPS 五.limitations 总 ...

最新文章

  1. Alpha多样性稀释曲线rarefraction curve还不会画吗?快看此文
  2. R语言layout函数处理可视化图像布局实战
  3. vue.js学习笔记(1)
  4. 模拟四:STEMA 考试选择题模拟练习试卷(中级组)及答案 + 自我解题笔记
  5. ios15使用NSXMLParser解析XML
  6. Java 11:将集合转换为数组
  7. 微信小程序获取当前时间戳、获取当前时间、时间戳加减
  8. 微软研发致胜策略读书笔记(转)
  9. 信息学奥赛一本通 1322:【例6.4】拦截导弹问题(Noip1999)
  10. cc java区别_cC和C++和java的问题有啥区别?
  11. 万向区块链与生态圈合作伙伴形成RISC-V国际区块链SIG
  12. 【Tensorlayer系列】深度强化学习之DQN求解FrozenLake
  13. InTouch软件介绍
  14. 一文教你高效画出技术架构图
  15. 老路《用得上的商学课》学习笔记(1-5课)
  16. 计算机软件著作权登记去哪查询,软件著作权在哪里查询
  17. codecademy
  18. 谭谭牛顿的牛眼之人眼是红外线成像仪谭
  19. input主动获取焦点
  20. 麦肯锡三部曲_越拼命工作,越不快乐?麦肯锡“提问式思维”帮你发现问题本质...

热门文章

  1. JavaScript基础--BOM部分01--李南江
  2. 微软疯了|盘点微软的那些全屏通知操作
  3. PYTHON重要信息通知(短信通知+语音播报)解决方案
  4. 开源数据采集技术对比
  5. 大数据离线分析工具Hive简单介绍
  6. Python函数的变量域
  7. 理光2500文件服务器,理光打印机文件服务器地址
  8. JAVA设计模式是个什么玩意儿_02_抽象工厂模式
  9. 运维工程师必会工具:nmap
  10. 微信小程序:实现悬浮返回和分享按钮