Time:2016.05.29
Author:xiaoyimi
转载注明出处谢谢


思路:
(水题硬是让我调了1h+)
a[i][j]为第i行第j列的石柱高度
把每个石柱i拆成两个点pi,qi,连边流量为a[i][j],如果上面有蜥蜴就连一条s到pi的点,流量为1,如果i能跳出边界,就连一条qi到t的边,流量inf,然后qi向所有能到达的石柱pj连边(不能向自己连边),流量为inf。跑出来的最大流就是能跑出去的蜥蜴的最大数量
注意:
(为了图省事边读入边连边,结果调了好久)
代码:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<queue>
#define inf 100000
using namespace std;
int n,m,d,tot=1,s,t;
int a[22][22],dis[1000],first[1000];
bool b[22][22];
struct edge{int v,w,next;}e[500010];
queue<int>q;
void add(int x,int y,int z)
{e[++tot]=(edge){y,z,first[x]};first[x]=tot;e[++tot]=(edge){x,0,first[y]};first[y]=tot;
}
bool bfs()
{memset(dis,0,sizeof(dis));q.push(s);dis[s]=1;while (!q.empty()){int k=q.front();q.pop();for (int i=first[k];i;i=e[i].next)if (e[i].w&&!dis[e[i].v])dis[e[i].v]=dis[k]+1,q.push(e[i].v); }return dis[t];
}
int dfs(int x,int maxn)
{if (x==t) return maxn;int used=0;for (int i=first[x];i;i=e[i].next)if (dis[e[i].v]==dis[x]+1){int k=dfs(e[i].v,min(maxn-used,e[i].w));used+=k;e[i].w-=k;e[i^1].w+=k;if (used==maxn) return maxn;}if (!used) dis[x]=0;return used;
}
bool cal(int x1,int y1,int x2,int y2){return (x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)<=d*d;}
main()
{scanf("%d%d%d",&n,&m,&d);t=n*m*2+1;for (int i=1;i<=n;i++)for (int j=1;j<=m;j++){char ch=getchar();while (ch>'3'||ch<'0') ch=getchar();a[i][j]=ch-'0';}for (int i=1;i<=n;i++)for (int j=1;j<=m;j++)if (a[i][j]){add((i-1)*m+j,(i-1)*m+j+n*m,a[i][j]);if (d>=min(min(i,j),min(n-i+1,m-j+1)))add((i-1)*m+j+n*m,t,a[i][j]);for (int p=1;p<=n;p++)for (int q=1;q<=m;q++)if (a[p][q]&&(p!=i||q!=j)&&cal(i,j,p,q))add((i-1)*m+j+n*m,(p-1)*m+q,a[i][j]);}int ans=0;for (int i=1;i<=n;i++)for (int j=1;j<=m;j++){char ch=getchar();while (ch!='.'&&ch!='L') ch=getchar();b[i][j]=(ch=='L');if (b[i][j]) ans++,add(s,(i-1)*m+j,1);}while (bfs())ans-=dfs(s,inf);printf("%d",ans);
}

【codevs2440】【BZOJ1066】蜥蜴,最大流相关推荐

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

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

  2. bzoj1066 蜥蜴 (dinic)

    最大流板子题. 对于每根柱子,建两个点ai,bi,建边(ai,bi,柱子高度) 对于距离不超过d的两根柱子i,j,建边(bi,aj,inf) 对于起始位置在i的每个蜥蜴,建边(S,ai,1) 对于能跳 ...

  3. [SCOI2007] 蜥蜴 (最大流)

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

  4. 洛谷 - P2472 [SCOI2007]蜥蜴(最大流)

    题目链接:点击查看 题目大意:给出一个 n * m 的迷宫,每个位置都有一个耐久度,也就是至多经过 a[ i ][ j ] 位置 ( i , j ),现在迷宫中有一些蜥蜴,每一时刻在每一个位置至多有一 ...

  5. BZOJ1066 蜥蜴

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

  6. c语言全局变量和局部变量作用域重合时,c语言全局变量与局部变量(当变量重名时)的使用情况...

    ABP框架 - 时间 文档目录 本节内容: 简介 时钟 客户端 时区 客户端 绑定器与转换器 简介 虽然有些应用目标市场只是在一个时区,有些应用目标市场是许多不同时区,为满足这种需求并集中化日期操作, ...

  7. BZOJ ac100题存档

    不知不觉AC100题了,放眼望去好像都是水题.在这里就做一个存档吧(特别感谢各位大神尤其是云神http://hi.baidu.com/greencloud和丽洁姐http://wjmzbmr.com/ ...

  8. bzoj 1066: [SCOI2007]蜥蜴(最大流)

    1066: [SCOI2007]蜥蜴 Time Limit: 1 Sec  Memory Limit: 162 MB Submit: 4116  Solved: 2081 [Submit][Statu ...

  9. BZOJ1066: [SCOI2007]蜥蜴

    1066: [SCOI2007]蜥蜴 Time Limit: 1 Sec  Memory Limit: 162 MB Submit: 4506  Solved: 2305 [Submit][Statu ...

最新文章

  1. python类方法以及类调用实例方法的理解
  2. #include 和#include“”的区别
  3. python爬虫简单示例_最简单爬虫示例(入门级)
  4. html5清除手机页面缓存文件夹,WebView自动缓存-清除缓存
  5. php框架之laravel
  6. 转 批处理 %~dp0的意义
  7. HCIA-IoT V2.5 物联网初级考试-2019年题库错题汇总
  8. 基于麻雀搜索算法优化深度置信网络的分类方法(SSA-DBN)
  9. 利用mysql客户端查询UCSC数据库
  10. Kali安装中文输入法
  11. 羞涩!紧张!!兴奋!!!
  12. total commander最近修改标红
  13. CCS编译错误:error #10099-D和error#10234-D unresolved symbols remain解决方法
  14. 电信副卡显示无服务器,电信副卡,你从来就是一个陷阱吗?
  15. [翻译] Oracle Database 12c 新特性Multitenant - Cheney Shue
  16. libreoffice python_如何在LibreOffice中运行python宏?
  17. ipv6dns服务器后面为空,ipv6获取不到网关和dns服务器
  18. python 浏览器 弹 另存为_另存为弹出框如何调用
  19. 什么情况下会出现笛卡尔积
  20. FreeSwitch配置开启转码功能及安装G729语音编码

热门文章

  1. Vue-Router中History模式【华为云分享】
  2. 【Python3网络爬虫开发实战】3.1.2-处理异常
  3. css布局难,运用 CSS布局到底有多难?[多图]
  4. oracle无法重命名服务器名字,重命名Oracle数据库服务器
  5. 红橙Darren视频笔记 筛选View 属性动画 Adapter模式 组合动画AnimatorSet 观察者模式(对比Android ListView) 练习
  6. Android 高斯模糊demo
  7. 数据结构-动态查找树表与平衡二叉树 红黑树简单介绍
  8. Android 数据访问之External Storage 数据保存在sd卡 demo+笔记
  9. 450g带盖吐司配方_食谱 | 直接法北海道吐司,一起get柔软的秘密!
  10. source:读取文件 “/etc/profile” 时发生错误解决办法