题解:

和上一题差不多

然后注意格式

代码:

#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
const int N=;
using namespace std;
struct data{int to,ne,v;}e[];
int r,c,d,T,cnt,ans,cas,mp[N][N],mark[N][N],q[],h[],fi[];
void ins(int u,int v,int w)
{
cnt++;e[cnt].to=v;
e[cnt].ne=fi[u];
fi[u]=cnt;
e[cnt].v=w;
}
void insert(int u,int v,int w)
{
ins(u,v,w);
ins(v,u,);
}
int judge(int x1,int y1,int x2,int y2)
{
if (((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))<=(d*d)&&mp[x1][y1]&&mp[x2][y2])
return ;
return ;
}
void build()
{
for (int x1=;x1<=r;x1++)
for (int y1=;y1<=c;y1++)
for (int x2=x1-d;x2<=x1+d;x2++)
for (int y2=y1-d;y2<=y1+d;y2++)
if (judge(x1,y1,x2,y2)&&(x1!=x2||y1!=y2))
insert(mark[x1][y1]+,mark[x2][y2],1e9);
for (int i=;i<=r;i++)
for (int j=;j<=c;j++)
if (mp[i][j])insert(mark[i][j],mark[i][j]+,mp[i][j]);
}
int bfs()
{
memset(h,-,sizeof(h));
int t=,w=,now;
q[]=h[]=;
while (t<w)
{
now=q[t++];
for (int i=fi[now];i;i=e[i].ne)
if (e[i].v&&h[e[i].to]==-)
{
h[e[i].to]=h[now]+;
q[w++]=e[i].to;
}
}
if (h[]==-)return ;
return ;
}
int dfs(int x,int f)
{
if (x==)return f;
int used=,w;
for (int i=fi[x];i;i=e[i].ne)
if (e[i].v&&h[e[i].to]==h[x]+)
{
w=f-used;w=dfs(e[i].to,min(w,e[i].v));
e[i].v-=w;e[i^].v+=w;
used+=w;
if(used==f)return f;
}
if (!used)h[x]=-;
return used;
}
void doit()
{
scanf("%d%d",&r,&d);
char ch[N];
memset(mp,,sizeof mp);
memset(mark,,sizeof mark);
memset(fi,,sizeof fi);
memset(e,,sizeof e);
memset(q,,sizeof q);
memset(h,,sizeof h);
cnt=;
ans=;
for (int i=;i<=r;i++)
{
scanf("%s",ch);
c=strlen(ch);
for (int j=;j<=c;j++)mp[i][j]=ch[j-]-'';
}
int tot=;
for (int i=;i<=r;i++)
for (int j=;j<=c;j++)
{
tot++;
mark[i][j]=tot;
}
for (int i=;i<=r;i++)
{
scanf("%s",ch);
for (int j=;j<=c;j++)
if (ch[j-]=='L'){insert(,mark[i][j],);ans++;}
}
for (int i=;i<=d;i++)
for (int j=d+;j<=r-d;j++)
{
insert(mark[j][i]+,,1e9);
insert(mark[j][c-i+]+,,1e9);
}
for (int i=;i<=d;i++)
for (int j=;j<=c;j++)
{
insert(mark[i][j]+,,1e9);
insert(mark[r-i+][j]+,,1e9);
}
build();
while (bfs())ans-=dfs(,1e9);
printf("Case #%d: ",++cas);
if (ans==)printf("no ");else printf("%d ",ans);
if (ans<)puts("lizard was left behind.");
else puts("lizards were left behind.");
}
int main()
{
scanf("%d",&T);
while (T--)doit();
}

hdu2732的更多相关文章

  1. HDU2732 Leapin' Lizards 网络流 最大流 SAP

    原文链接http://www.cnblogs.com/zhouzhendong/p/8362002.html 题目传送门 - HDU2732 题意概括 给你一个网格,网格上的一些位置上有一只蜥蜴,所有 ...

  2. HDU2732 Leapin' Lizards —— 最大流、拆点

    题目链接:https://vjudge.net/problem/HDU-2732 Leapin' Lizards Time Limit: 2000/1000 MS (Java/Others)    M ...

  3. hdu2732 Leapin' Lizards 最大流+拆点

    Your platoon of wandering lizards has entered a strange room in the labyrinth you are exploring. As ...

  4. HDU2732一个让我debug了一晚上的题目

    思路都理解了,清晰了,就是代码不对,还是有些小地方自己注意不到,即使就在你的眼前也不易发现的那种 Description: 也是一个最大流的构图,没相出来,或者说想简单了也是标记点1 至 n * m是 ...

  5. HDU2732(KB11-K 最大流)

    Leapin' Lizards Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  6. HDU2732 最大流

    Leapin' Lizards Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tot ...

  7. hdu2732 (Leapin' Lizards)

    题目链接:传送门 题目大意:给你 n,m  n:有几行图,m是一个人最多跳m个曼哈顿距离. 给你两张图,第一张图数字为0表示没有柱子,否则有柱子且只能跳出去 x 次(x为当前字符代表的数字) 第二张图 ...

  8. HDU2732:Leapin' Lizards(最大流)

    Leapin' Lizards Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  9. hdu2732 Leapin' Lizards (网络流dinic)

    D - Leapin' Lizards Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u ...

随机推荐

  1. NC开发笔记指导

    修改端口 InvocationInfoProxy.getInstance().get().getUserCode(); 前台 Nchome F:\JAVA\Projects\ERPEHROA\ufid ...

  2. iOS开发之UITableViewController重写

    # UITablViewController方法的使用介绍 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { // ...

  3. 深入探讨JS中的数组排序函数sort()和reverse()

    最近在研究Javascript发现了其中一些比较灵异的事情.有点让人感到无语比如: alert(typeof( NaN == NaN));//结果为假. alert(typeof( NaN != Na ...

  4. 【c++ primer, 5e】特殊用途语言特性

    [默认实参] 1.注意点:函数的默认实参可以在函数的声明中添加,但是后续声明只能添加默认参数而不能改变先前声明的默认参数.(函数的声明通常是定义在头文件上的,多次声明同一个函数是合法的) 2.默认实参 ...

  5. JS的checkbox状态切换dom无变化

    今天调试checkbox,手动加上checked="checked"和去掉,都对实际页面没有产生影响 搜索一番 1.对radio .checkbox 来说说,checked属性可以 ...

  6. 非root权限 安装更新gcc

    本文主要参考网络上文章,并根据自己安装出现的问题进行补充. 参考文章: 1.gcc和boost的升级步骤(非root权限):https://blog.csdn.net/u010246947/artic ...

  7. C#的switch case注意

    参数可以是 switch 语句中的 参数必须是一个整型或枚举类型,或者是一个 class 类型,其中 class 有一个单一的转换函数将其转换为整型或枚举类型. 所以用string也可以,6666

  8. python-作用域和装饰器

    Python 作用域 学习的时机: 基本的数据类型 Python的运算 数字运算 + - * / // ** 逻辑运算 And or not 比较运算 > < == >= <= ...

  9. LeetCode——remove-duplicates-from-sorted-list-ii

    Question Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only dist ...

  10. valgrind的memchk和callgrind

    一.安装valgrind 安装valgrind,正常的三部曲configure/make/make install就行. 二.memchk使用 1.执行命令 [root@10g-host4 tools ...