题解:

和上一题差不多

然后注意格式

代码:

#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. matlab和mathematics最新的FTP地址

    https://dio.obspm.fr/interne/logiciels/matlab/ 分享一个地址,非常好的FTP网站.

  2. appium不同姿势安装

    一 桌面版(打开很慢,常用于辅助元素定位) 1.官网下载window版本: 2.直接点击图标即可打开  

  3. Ubuntu下安装keras

    0 系统版本Ubuntu16.04 1 系统更新 sudo apt update sudo apt upgrade 2 安装python基础开发包 sudo apt install -y python ...

  4. json转List、Map

    import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.Li ...

  5. 条件编译#ifdef的妙用详解

    c语言中条件编译相关的预编译指令,包括  #define.#undef.#ifdef.#ifndef.#if.#elif.#else.#endif.defined. #define           ...

  6. SQL.Mysql中Cast()函数的用法

    比起orcale,MySQL相比之下就简单得多了,只需要一个Cast()函数就能搞定.其语法为:Cast(字段名 as 转换的类型 ),其中类型可以为: CHAR[(N)] 字符型  DATE  日期 ...

  7. linux目录结构及文件权限

    安装banner用到的指令: 第一步: sudo apt-get update 第二步: sudo apt-get install sysvbanner 成功了 创建新用户指令: sudo addus ...

  8. poj 2187:Beauty Contest(旋转卡壳)

    Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 32708   Accepted: 10156 Description Bes ...

  9. Response attachment filename 中文乱码

    Response.setHeader("Content-Disposition", "attachment; filename=" + fileName+&qu ...

  10. Java 面试题基础概念收集(高级)

    JVM垃圾回收: GC又分为 minor GC 和 Full GC (也称为 Major GC ).Java 堆内存分为新生代和老年代,新生代中又分为1个 Eden 区域 和两个 Survivor 区 ...