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 ...
随机推荐
- ARKit 研究笔记一
软件需求:Xcode9.x .blender 硬件需求:iphone 6s + 系统:iOS 11 + 技能储备: ARKit .SceneKit(苹果提供的3d游戏库) 或 SpriteKit(苹果 ...
- [Linux 006]——grep和正则表达式
在使用系统时,我们或多或少的有一些搜索.查找的需求,必须要在文本中搜索某个关键字,或者过滤出文本中某些特定的行.grep 命令就为我们提供了这样一个功能,同时,grep 还可以使用正则表达式进行匹配, ...
- 20135320赵瀚青LINUX第三章读书笔记
第三章 进程管理 3.1 进程 进程的定义: 是处于执行期的程序以及它所包含的资源的总称. 线程的定义: 是在进程中活动的对象. 每个线程都拥有一个独立的程序计数器.进程栈和一组进程寄存器. 内核调度 ...
- TCP协议三次握手过程分析(改)
TCP(Transmission Control Protocol) 传输控制协议 TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接: 位码即tcp标志位,有6种标 ...
- openwrt下如何只编译uboot
答:如使用以下命令编译nxp的layerscape系列芯片相关的uboot: make package/boot/uboot-layerscape/prepare make package/boot/ ...
- Juniper SRX防火墙简明配置手册(转)
在执行mit命令前可通过配置模式下show命令查看当前候选配置(Candidate Config),在执行mit后配置模式下可通过run show config命令查看当前有效配置(Active co ...
- Graph_Master(连通分量_E_Hungry+Tarjan)
hdu_4685 终于来写了这题的解题报告,没有在昨天A出来有点遗憾,不得不说数组开大开小真的是阻碍人类进步的一大天坑. 题目大意:给出n个王子,m个公主,只要王子喜欢,公主就得嫁(这个王子当得好霸道 ...
- hadoop项目实战--ETL--(二)实现自动向mysql中添加数据
四 项目开发 1 创建数据库db_etl,新建两张表user 和oder.表结构如第一部分图所示. 2 编写python脚本,实现自动向mysql中插入数据. 新建python 项目,目录结构如下图 ...
- hadoop安装时报错 /usr/local/hadoop-2.6.0-stable/hadoop-2.6.0-src/hadoop-hdfs-project/hadoop-hdfs/target/findbugsXml.xml does not exist
安装时报错:Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.7:run (site) on project ...
- Nagios安装完后status map,trends等页面访问出错之解决
首先,可以进入/usr/local/nagios/sbin, [root@localhost sbin]# ldd statusmap.cgi linux-vdso.so. => (0x0000 ...