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

#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. 对RTMP视频流进行BitmapData.draw()出错的解决办法

    source on github 在对Flash Media Server中的视频流使用BitmapData.draw()进行绘制的时候,会抛出这样异常: cannot access rtmp://x ...

  2. LazyInitializationException: could not initialize proxy no session

    这完全是框架设计者的锅,讲道理  无论是SSH SSM都太重了, Hibernate几乎把SQL完全封装了一遍,简单的一对多关系,如果开启LazyLoad 这样实体类会被代理,直到访问这个多方实体的属 ...

  3. HTML 学习笔记 CSS(轮廓)

    轮廓(outline)是绘制于元素周围的一条线 位于边框边缘的外围 可起到突出元素的作用 CSS outline属性规定元素轮廓的样式 颜色和宽度 话不多说 来几个例子 看一看 1:在元素周围画线 & ...

  4. Java中run(), start(), join(), wait(), yield(), sleep()的使用

    run(), start(), join(), yield(), sleep() 这些是多线程中常用到的方法. run(): 每个Thread中需要实现的方法, 如果直接调用的话, 会是和单线程一样的 ...

  5. Java集合系列:-----------08HashMap的底层实现

    对于HashMap感觉一直是看了忘,忘了看.这里就单独写一篇日志来记录一下.HashMap的底层实现. 非常好的讲HashMap的博客:http://blog.csdn.net/vking_wang/ ...

  6. 协程python

    python中协程 在引出协成概念之前先说说python的进程和线程. 进程: 进程是正在执行程序实例.执行程序的过程中,内核会讲程序代码载入虚拟内存,为程序变量分配空间,建立 bookkeeping ...

  7. 1002. A+B for Polynomials

    1002. A+B for Polynomials (25) This time, you are supposed to find A+B where A and B are two polynom ...

  8. vmware安装cent os 6.5 + oracle 11g xe + jboss eap 6.2 + weblogic 12c+ webshpere mq 7.5

    前言: mac系统发展速度确实很快,短短数年,mac os上已经能网银支付(中行.招行.工商.支付宝等均已全面支持mac os了),windows上的经典常用软件:qq.飞信.旺旺.有道词典.有道云笔 ...

  9. 谈谈软件项目的dependency

    说到软件项目的依赖管理,可以从三个方面来考虑: 一.由build system控制的dependency 现在的build system,都支持一定程度上的dependency management, ...

  10. C语言复习(1)

    test.c #include <stdio.h> int main(){ printf("hello\n"); return 0; } 1.预处理阶段 由于在test ...