hdu2732
题解:
和上一题差不多
然后注意格式
代码:
#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的更多相关文章
- HDU2732 Leapin' Lizards 网络流 最大流 SAP
原文链接http://www.cnblogs.com/zhouzhendong/p/8362002.html 题目传送门 - HDU2732 题意概括 给你一个网格,网格上的一些位置上有一只蜥蜴,所有 ...
- HDU2732 Leapin' Lizards —— 最大流、拆点
题目链接:https://vjudge.net/problem/HDU-2732 Leapin' Lizards Time Limit: 2000/1000 MS (Java/Others) M ...
- hdu2732 Leapin' Lizards 最大流+拆点
Your platoon of wandering lizards has entered a strange room in the labyrinth you are exploring. As ...
- HDU2732一个让我debug了一晚上的题目
思路都理解了,清晰了,就是代码不对,还是有些小地方自己注意不到,即使就在你的眼前也不易发现的那种 Description: 也是一个最大流的构图,没相出来,或者说想简单了也是标记点1 至 n * m是 ...
- HDU2732(KB11-K 最大流)
Leapin' Lizards Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)T ...
- HDU2732 最大流
Leapin' Lizards Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tot ...
- hdu2732 (Leapin' Lizards)
题目链接:传送门 题目大意:给你 n,m n:有几行图,m是一个人最多跳m个曼哈顿距离. 给你两张图,第一张图数字为0表示没有柱子,否则有柱子且只能跳出去 x 次(x为当前字符代表的数字) 第二张图 ...
- HDU2732:Leapin' Lizards(最大流)
Leapin' Lizards Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)T ...
- hdu2732 Leapin' Lizards (网络流dinic)
D - Leapin' Lizards Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u ...
随机推荐
- PHP jsonencode 已经json中包含 汉字的处理
<?php $arr = array ( 'Name'=>'希亚', ); $jsonencode = json_encode($arr); echo $jsonencode; ?> ...
- Django学习笔记之Queryset的高效使用
对象关系映射 (ORM) 使得与SQL数据库交互更为简单,不过也被认为效率不高,比原始的SQL要慢. 要有效的使用ORM,意味着需要多少要明白它是如何查询数据库的.本文我将重点介绍如何有效使用 Dja ...
- Django学习笔记之Django ORM Aggregation聚合详解
在当今根据需求而不断调整而成的应用程序中,通常不仅需要能依常规的字段,如字母顺序或创建日期,来对项目进行排序,还需要按其他某种动态数据对项目进行排序.Djngo聚合就能满足这些要求. 以下面的Mode ...
- 根据iframe获取window
今天使用layui弹出窗口,需要将函数写在弹出的窗口,但是按钮事件是在父层窗口绑定的,这样就要在父层窗口调用子层窗口的函数. 子层函数与父层函数 function topup() { console. ...
- 20145335郝昊《Java程序设计》第2周学习总结
20145335郝昊<Java程序设计>第2周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long整 ...
- java处理json的工具类(list,map和json的之间的转换)
需要下载第三方的jar :net.sf.json import java.io.BufferedReader; import java.io.InputStream; import java.io.I ...
- apache——(OS 10048)通常每个套接字地址(协议/网络地址/端口)只允许使用一次。 : AH00072: make_sock: could not bind to address [::]:443
问题:命令行运行httpd.exe时报错 (OS 10048)通常每个套接字地址(协议/网络地址/端口)只允许使用一次. : AH00072: make_sock: could not bind t ...
- 配置了java环境变量后不起作用
我的电脑上装了好几个版本的jdk,有jdk1.6.jdk1.8.但是我的环境变量是设置jdk1.6的.然而打开cmd,查看Java版本却显示的是1.8,这让我百思不得其解.后来发现了问题. 问题:在p ...
- mysql 索引相关问题
mysql中key .primary key .unique key 与index区别 https://blog.csdn.net/nanamasuda/article/details/5254317 ...
- python调用虹软2.0(全网首发)-更新中
python调用虹软2.0目前没有任何demo可以参考,自己研究了2个晚上终于把第一步做出来了,使用了opencv来加载和显示图片,龟速更新中 这一版作废,新版已发出:https://www.cnbl ...