最大流板子题。

对于每根柱子,建两个点ai,bi,建边(ai,bi,柱子高度)

对于距离不超过d的两根柱子i,j,建边(bi,aj,inf)

对于起始位置在i的每个蜥蜴,建边(S,ai,1)

对于能跳出地图的柱子i,建边(bi,E,inf)

然后跑dinic即可

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<algorithm>
  4. #include<queue>
  5. using namespace std;
  6. const int maxn=,inf=0x3f3f3f3f;
  7.  
  8. struct Edge{
  9. int a,b,v;
  10. int ne;
  11. }eg[maxn*maxn*maxn*maxn*];
  12.  
  13. int R,C,D,pcnt,rcnt,ecnt;
  14. int map[maxn][maxn][];
  15. int rd[][];
  16. int egh[maxn*maxn*],P[maxn][maxn][];
  17. int deep[maxn*maxn*];
  18.  
  19. inline void addedge(int a,int b,int v){
  20. eg[ecnt].a=a;eg[ecnt].b=b;eg[ecnt].v=v;eg[ecnt].ne=egh[a];egh[a]=ecnt++;
  21. eg[ecnt].a=b;eg[ecnt].b=a;eg[ecnt].v=;eg[ecnt].ne=egh[b];egh[b]=ecnt++;
  22. }
  23.  
  24. bool bfs(){
  25. queue<int> q;memset(deep,,sizeof(deep));
  26. q.push();deep[]=;
  27. while(!q.empty()){
  28. int p=q.front();q.pop();
  29. for(int i=egh[p];i!=-;i=eg[i].ne){
  30. if(eg[i].v&&!deep[eg[i].b]){
  31. q.push(eg[i].b);deep[eg[i].b]=deep[p]+;
  32. }
  33. }
  34. }return deep[];
  35. }
  36.  
  37. int dinic(int x,int l){
  38. if(x==) return l;int tmp=l;
  39. for(int i=egh[x];i!=-;i=eg[i].ne){
  40. if(deep[eg[i].b]!=deep[x]+||!eg[i].v) continue;
  41. int re=dinic(eg[i].b,min(eg[i].v,l));
  42. if(!re) deep[eg[i].b]=;
  43. tmp-=re;eg[i].v-=re;eg[i^].v+=re;
  44. if(!tmp) break;
  45. }return l-tmp;
  46. }
  47.  
  48. int main(){
  49. int i,j,k,ans=;
  50. char s[maxn];
  51. //freopen("1066.in","r",stdin);
  52. scanf("%d%d%d",&R,&C,&D);
  53. for(i=;i<=R;i++){
  54. scanf("%s",s+);
  55. for(j=;j<=C;j++) map[i][j][]=s[j]-'';
  56. }
  57. for(i=;i<=R;i++){
  58. scanf("%s",s+);
  59. for(j=;j<=C;j++) map[i][j][]=(s[j]=='L'?:);
  60. }
  61. for(i=-D;i<=D;i++){
  62. for(j=-D;j<=D;j++){
  63. if(i*i+j*j<=D*D){rd[rcnt][]=i;rd[rcnt++][]=j;}
  64. }
  65. }
  66. pcnt=;memset(egh,-,sizeof(egh));
  67. for(i=;i<=R;i++) for(j=;j<=C;j++) if(map[i][j][]){
  68. P[i][j][]=++pcnt;P[i][j][]=++pcnt;addedge(P[i][j][],P[i][j][],map[i][j][]);
  69. if(map[i][j][]) {addedge(,P[i][j][],);ans++;}
  70. }
  71. for(i=;i<=R;i++){
  72. for(j=;j<=C;j++){
  73. if(!map[i][j][]) continue;
  74. bool b=;
  75. for(k=;k<rcnt;k++){
  76. int ii=i+rd[k][],jj=j+rd[k][];
  77. if(ii<=||ii>R||jj<=||jj>C) b=;
  78. else if(map[ii][jj]) addedge(P[i][j][],P[ii][jj][],inf);
  79. }if(b) addedge(P[i][j][],,inf);
  80. }
  81. }
  82. while(bfs()) ans-=dinic(,inf);
  83. printf("%d",ans);
  84. }

bzoj1066 蜥蜴 (dinic)的更多相关文章

  1. 蜥蜴-DInic

    题目背景 07四川省选 题目描述 在一个r行c列的网格地图中有一些高度不同的石柱,一些石柱上站着一些蜥蜴,你的任务是让尽量多的蜥蜴逃到边界外. 每行每列中相邻石柱的距离为1,蜥蜴的跳跃距离是d,即蜥蜴 ...

  2. BZOJ-1066 蜥蜴 最大流+拆点+超级源超级汇

    1066: [SCOI2007]蜥蜴 Time Limit: 1 Sec Memory Limit: 162 MB Submit: 2582 Solved: 1272 [Submit][Status] ...

  3. bzoj1066 蜥蜴

    Description 在一个r行c列的网格地图中有一些高度不同的石柱,一些石柱上站着一些蜥蜴,你的任务是让尽量多的蜥蜴逃到边界外. 每行每列中相邻石柱的距离为1,蜥蜴的跳跃距离是d,即蜥蜴可以跳到平 ...

  4. 【蒟蒻の进阶PLAN】 置顶+持续连载

    看到周围神犇们纷纷列计划,本蒟蒻也决定跟随他们的步伐,计划大约是周计划吧,具体怎么安排我也不确定.. 2015.12.30 刚刚学习完最基础的网络流,需要进行这方面的练习,从简到难,有空余的话尝试学习 ...

  5. 【bzoj1066】[SCOI2007]蜥蜴 网络最大流

    [bzoj1066][SCOI2007]蜥蜴 Description 在一个r行c列的网格地图中有一些高度不同的石柱,一些石柱上站着一些蜥蜴,你的任务是让尽量多的蜥蜴逃到边界外. 每行每列中相邻石柱的 ...

  6. BZOJ1066 SCOI2007 蜥蜴 【网络流-最大流】

    BZOJ1066 SCOI2007 蜥蜴 Description 在一个r行c列的网格地图中有一些高度不同的石柱,一些石柱上站着一些蜥蜴,你的任务是让尽量多的蜥蜴逃到边界外. 每行每列中相邻石柱的距离 ...

  7. 【bzoj1066】: [SCOI2007]蜥蜴 图论-最大流

    [bzoj1066]: [SCOI2007]蜥蜴 把石柱拆点,流量为高度 然后S与蜥蜴连流量1的边 互相能跳到的石柱连inf的边 石柱能到边界外的和T连inf的边 然后跑dinic就好了 /* htt ...

  8. [BZOJ1066][luogu_P2472][SCOI2007]蜥蜴

    [BZOJ1066][luogu_P2472][SCOI2007]蜥蜴 试题描述 在一个 \(r\) 行 \(c\) 列的网格地图中有一些高度不同的石柱,一些石柱上站着一些蜥蜴,你的任务是让尽量多的蜥 ...

  9. BZOJ1066 [SCOI2007]蜥蜴

    首先...这是道(很水的)网络流 我们发现"每个时刻不能有两个蜥蜴在同一个柱子上"这个条件是没有用的因为可以让外面的先跳,再让里面的往外跳 但是还有柱子高度的限制,于是把柱子拆点为 ...

随机推荐

  1. React Native之FlatList的介绍与使用实例

    React Native之FlatList的介绍与使用实例 功能简介 FlatList高性能的简单列表组件,支持下面这些常用的功能: 完全跨平台. 支持水平布局模式. 行组件显示或隐藏时可配置回调事件 ...

  2. Windows 下面 redis 发布为服务的官方方法

    除了 NSSM 之外 另外一种方式 感觉还是很好用的 redis-server --service-install redis.windows.conf --loglevel verbose 感觉也可 ...

  3. [转帖]SQL Server 索引中include的魅力(具有包含性列的索引)

    SQL Server 索引中include的魅力(具有包含性列的索引) http://www.cnblogs.com/gaizai/archive/2010/01/11/1644358.html 上个 ...

  4. vue图表

    https://www.cnblogs.com/powertoolsteam/p/top-9-javascript-charting-libraries.html

  5. CLOUD计算产品成本嵌套

    1.产品入库单入库的半成品A (无单价) 2.其他出库单上(共耗的)出库的半成品A(无单价) 不管在同车间还是不同车间内都是认定为嵌套的,所以可以计算2遍成本,第1遍不考虑嵌套,第2遍就能计算进去了.

  6. Java线程的5种状态及切换(透彻讲解)-京东面试

    一.Thread的几个重要方法: 我们先了解一下Thread的几个重要方法. a.start()方法,开始执行该线程:b.stop()方法,强制结束该线程执行:c.join方法,等待该线程结束.d.s ...

  7. LeetCode & Online Programming Learning Platform

    leetcode LeetCode is the best platform to help you enhance your skills, expand your knowledge and pr ...

  8. qtp 自动化测试--点滴 菜单没有了,有些控件运行时找不到

    test项目页签下-没有了 菜单栏:file edit view insert 看不到了 1 解决:在startpage标签下-tool-option-点击 restore layout-确定 2 菜 ...

  9. Git拉取项目时报错“remote: HTTP Basic: Access denied”解决方法

    问题: Git拉取项目时报错“remote: HTTP Basic: Access denied”,此问题多为本地密码与远端密码不符导致. 解决方法: 在下载地址中加上用户名和密码即可,如下: htt ...

  10. Mybatis-java.lang.RuntimeException: org.apache.ibatis.exceptions.PersistenceException: ### Error building SqlSession. ### The error may exist in sqlmap/User.xml ### Cause: org.apache.ibatis.builder.B

    mappers(映射器) 使用相对于类路径的资源 如:<mapper resource="sqlmap/User.xml" /> 使用完全限定路径 如:<mapp ...