首先,我们可以想到从源点向每个有蜥蜴的地方连边,然后拆点,因为我们不能把一个点连向多条边,这样修改边的时候不可以,所以拆个点,就可以了

#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
const int inf=0x3f3f3f3f;
struct edge
{
int to,nxt,f;
}e[];
string s;
int r,c,d,ans,cnt=,tot;
int board[][];
int g[],dist[];
void link(int u,int v,int f)
{
e[++cnt].nxt=g[u];
g[u]=cnt;
e[cnt].f=f;
e[cnt].to=v;
}
inline int Min(int x,int y)
{
return x<y?x:y;
}
inline int abs(int x)
{
return x<?-x:x;
}
inline int Max(int x,int y)
{
return x>y?x:y;
}
inline void ins(int u,int v,int f)
{
link(u,v,f); link(v,u,);
}
bool bfs()
{
queue<int>q;
memset(dist,inf,sizeof(dist));
dist[]=;
q.push();
while(!q.empty())
{
int u=q.front(); q.pop();
for(int i=g[u];i;i=e[i].nxt)
{
int v=e[i].to;
if(e[i].f&&dist[v]==inf)
{
dist[v]=dist[u]+;
q.push(v);
}
}
}
return dist[]!=inf;
}
int dfs(int u,int delta)
{
if(u==) return delta;
int ret=;
for(int i=g[u];i&&delta;i=e[i].nxt)
{
int v=e[i].to;
if(e[i].f&&dist[v]==dist[u]+)
{
int dd=dfs(v,Min(e[i].f,delta));
delta-=dd;
e[i].f-=dd;
e[i^].f+=dd;
ret+=dd;
}
}
return ret;
}
inline void dinic()
{
while(bfs())
{
ans+=dfs(,inf);
}
printf("%d",tot-ans);
}
int main()
{
cin>>r>>c>>d;
for(int i=;i<=r;i++)
{
cin>>s;
for(int j=;j<s.length();j++)
{
board[i][j+]=s[j]-'';
}
}
for(int i=;i<=r;i++)
for(int j=;j<=c;j++) if(board[i][j])
{
ins((i-)*c+j,(i-)*c+j+r*c,board[i][j]);
if(j-d<=||j+d>c||i-d<=||i+d>r)
{
ins((i-)*c+j+r*c,,board[i][j]);
}
for(int a=Max(,i-d);a<=Min(i+d,r);a++)
for(int b=Max(,j-d);b<=Min(j+d,c);b++)
if(abs(a-i)+abs(b-j)<=d&&board[a][b])
ins((i-)*c+j+r*c,(a-)*c+b,inf);
}
for(int i=;i<=r;i++)
{
cin>>s;
for(int j=;j<s.length();j++)
{
if(s[j]=='L') {tot++; ins(,(i-)*c+j+,);}
}
}
dinic();
return ;
}

bzoj1066的更多相关文章

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

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

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

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

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

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

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

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

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

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

  6. BZOJ1066 [SCOI2007]蜥蜴

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

  7. [bzoj1066] [SCOI2007] 蜥蜴 - 网络流

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

  8. bzoj1066 蜥蜴 (dinic)

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

  9. BZOJ1066 [SCOI2007]蜥蜴 网络流 最大流 SAP

    由于本题和HDU2732几乎相同,所以读者可以看-> HDU2732题解传送门: http://www.cnblogs.com/zhouzhendong/p/8362002.html

随机推荐

  1. crontab日常使用梳理

    在日常的运维工作中,对crontab定时任务的制定是再寻常不过的了.根据以往的使用经验梳理如下: 基本格式 :* * * * * command分 时 日 月 周 命令解释:第1列表示分钟1-59 每 ...

  2. java类型转换

    //java类型转换public class Demo2 { public static void main(String[] args){ int num1 = 55; int num2 =77; ...

  3. C语言:函数处理结构体

    #include <stdio.h> #include <stdlib.h> #include <string.h> struct namect{ ]; //数组 ...

  4. 配置Tomcat使用Redis作为session管理

    1. 在 tomcat/lib 中增加以下jar包 commons-pool2-.jar jedis-.jar tomcat-redis-session-manager-.jar 2. 修改tomca ...

  5. spring mvc总结1

    1,spring下载 spring更改了官方网站后,找了很长时间没有找到相关的jar包下载路径,然后在网上终于找到相关的路径了 有个树形结构可供选择:http://repo.spring.io/rel ...

  6. git 解决fatal: Not a git repository

    我用git add file添加文件时出现这样错误: fatal: Not a git repository (or any of the parent directories): .git 提示说没 ...

  7. DEDECMS之五 单页

    在网站开发中经常碰到关于我们.联系方式等简单的页面,那么在DEDECMS中如何实现? 一.效果 以上左侧导航的链接都是单页,右边为内容部分 二.单页的实现 创建频道封来实现 1.常规选项 2.高级选项 ...

  8. [转]一篇很全面的freemarker教程

    copy自http://demojava.iteye.com/blog/800204 以下内容全部是网上收集: FreeMarker的模板文件并不比HTML页面复杂多少,FreeMarker模板文件主 ...

  9. 基于ASP.NET MVC的热插拔模块式开发框架(OrchardNoCMS)--瘦身计划

    Orchard CMS是针对CMS开发的,对于很多开发需求来说,内容管理这块儿可能并不需要,而需要它的模块式开发模式.所以我这里通过对OrchardCMS进行瘦身,去除 内容管理部分的内容,保留简单的 ...

  10. Wabpack系列:在webpack+vue开发环境中使用echarts导致编译文件过大怎么办?

    现象,在一个webpack+vue的开发环境中,npm install echarts --save了echarts,然后在vue文件中直接使用 import echarts from 'echart ...