Leapin' Lizards(hdu 2732)
Leapin' Lizards
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 2080 Accepted Submission(s): 857
platoon of wandering lizards has entered a strange room in the
labyrinth you are exploring. As you are looking around for hidden
treasures, one of the rookies steps on an innocent-looking stone and the
room's floor suddenly disappears! Each lizard in your platoon is left
standing on a fragile-looking pillar, and a fire begins to rage below...
Leave no lizard behind! Get as many lizards as possible out of the
room, and report the number of casualties.
The pillars in the room
are aligned as a grid, with each pillar one unit away from the pillars
to its east, west, north and south. Pillars at the edge of the grid are
one unit away from the edge of the room (safety). Not all pillars
necessarily have a lizard. A lizard is able to leap onto any unoccupied
pillar that is within d units of his current one. A lizard standing on a
pillar within leaping distance of the edge of the room may always leap
to safety... but there's a catch: each pillar becomes weakened after
each jump, and will soon collapse and no longer be usable by other
lizards. Leaping onto a pillar does not cause it to weaken or collapse;
only leaping off of it causes it to weaken and eventually collapse. Only
one lizard may be on a pillar at any given time.
input file will begin with a line containing a single integer
representing the number of test cases, which is at most 25. Each test
case will begin with a line containing a single positive integer n
representing the number of rows in the map, followed by a single
non-negative integer d representing the maximum leaping distance for the
lizards. Two maps will follow, each as a map of characters with one row
per line. The first map will contain a digit (0-3) in each position
representing the number of jumps the pillar in that position will
sustain before collapsing (0 means there is no pillar there). The second
map will follow, with an 'L' for every position where a lizard is on
the pillar and a '.' for every empty pillar. There will never be a
lizard on a position where there is no pillar.Each input map is
guaranteed to be a rectangle of size n x m, where 1 ≤ n ≤ 20 and 1 ≤ m ≤
20. The leaping distance is
always 1 ≤ d ≤ 3.
each input case, print a single line containing the number of lizards
that could not escape. The format should follow the samples provided
below.
1 #include<stdio.h>
2 #include<algorithm>
3 #include<stdlib.h>
4 #include<iostream>
5 #include<string.h>
6 #include<vector>
7 #include<queue>
8 using namespace std;
9 struct node
10 {
11 int to;
12 int cap;
13 int rev;
14 };
15 char str[30][30];
16 char str2[30][30];
17 int id[30][30];
18 int level[100000];
19 vector<node>vec[100000];
20 const int N=1e8;
21 int iter[100000];
22 void add(int from,int to,int cap);
23 void bfs(int s);
24 int dfs(int s,int t,int f);
25 int max_flow(int s,int t);
26 int main(void)
27 {
28 int i,j,k;
29 scanf("%d",&k);
30 int s;
31 int p,q;
32 for(s=1; s<=k; s++)
33 {
34 scanf("%d %d ",&p,&q);
35 for(i=0; i<100000; i++)
36 vec[i].clear();
37 for(i=0; i<p; i++)
38 {
39 scanf("%s",str[i]);
40 }
41 for(i=0; i<p; i++)
42 {
43 scanf("%s",str2[i]);
44 }
45 int l=strlen(str[0]);
46 int ans=1;
47 for(i=0; i<p; i++)
48 {
49 for(j=0; j<l; j++)
50 {
51 id[i][j]=ans++;
52 }
53 }
54 ans-=1;
55 int x,y;
56 for(i=0; i<p; i++)
57 {
58 for(j=0; j<l; j++)
59 {
60 if(str[i][j]>'0')
61 add(id[i][j],id[i][j]+ans,str[i][j]-'0');
62 }
63 }
64 for(i=0; i<p; i++)
65 {
66 for(j=0; j<l; j++)
67 {
68 for(x=0; x<p; x++)
69 {
70 for(y=0; y<l; y++)
71 {
72 if(i!=x||j!=y)
73 {
74 if(abs(x-i)+abs(j-y)<=q)
75 {
76 add(id[i][j]+ans,id[x][y],N);
77 }
78 }
79 }
80 }
81 }
82 }
83 for(i=0; i<p; i++)
84 {
85 for(j=0; j<l; j++)
86 {
87 int cc=abs(i+1);
88 int dd=abs(p-i);
89 cc=min(cc,dd);
90 int kk=abs(j+1);
91 int vv=abs(l-j);
92 vv=min(kk,vv);
93 if((vv<=q||cc<=q))
94 {
95 add(id[i][j]+ans,2*ans+1,N);
96 }
97 }
98 }
99 int fuck=0;
100 for(i=0; i<p; i++)
101 {
102 for(j=0; j<l; j++)
103 {
104 if(str2[i][j]=='L')
105 {
106 add(0,id[i][j],1);
107 fuck++;
108 }
109 }
110 }
111 int sum=max_flow(0,2*ans+1);
112 printf("Case #%d: ",s);
113 if(fuck-sum==1)
114 printf("%d lizard was left behind.\n",fuck-sum);
115 else if(fuck-sum==0) printf("no lizard was left behind.\n");
116 else printf("%d lizards were left behind.\n",fuck-sum);
117 }
118 }
119 void add(int from,int to,int cap)
120 {
121 node nn;
122 nn.to=to;
123 nn.cap=cap;
124 nn.rev=vec[to].size();
125 vec[from].push_back(nn);
126 nn.to=from;
127 nn.cap=0;
128 nn.rev=vec[from].size()-1;
129 vec[to].push_back(nn);
130 }
131 void bfs(int s)
132 {
133 queue<int>que;
134 memset(level,-1,sizeof(level));
135 level[s]=0;
136 que.push(s);
137 while(!que.empty())
138 {
139 int v=que.front();
140 que.pop();
141 int i;
142 for(i=0; i<vec[v].size(); i++)
143 {
144 node e=vec[v][i];
145 if(level[e.to]==-1&&e.cap>0)
146 {
147 level[e.to]=level[v]+1;
148 que.push(e.to);
149 }
150 }
151 }
152 }
153 int dfs(int s,int t,int f)
154 {
155 if(s==t)
156 return f;
157 for(int &i=iter[s]; i<vec[s].size(); i++)
158 {
159 node &e=vec[s][i];
160 if(level[e.to]>level[s]&&e.cap>0)
161 {
162 int r=dfs(e.to,t,min(e.cap,f));
163 if(r>0)
164 {
165 e.cap-=r;
166 vec[e.to][e.rev].cap+=r;
167 return r;
168 }
169 }
170 }
171 return 0;
172 }
173 int max_flow(int s,int t)
174 {
175 int flow=0;
176 for(;;)
177 {
178 bfs(s);
179 if(level[t]<0)return flow;
180 memset(iter,0,sizeof(iter));
181 int f;
182 while((f=dfs(s,t,N))>0)
183 {
184 flow+=f;
185 }
186 }
187 }
Leapin' Lizards(hdu 2732)的更多相关文章
- POJ 2711 Leapin' Lizards / HDU 2732 Leapin' Lizards / BZOJ 1066 [SCOI2007]蜥蜴(网络流,最大流)
POJ 2711 Leapin' Lizards / HDU 2732 Leapin' Lizards / BZOJ 1066 [SCOI2007]蜥蜴(网络流,最大流) Description Yo ...
- 【解题报告】 Leapin' Lizards HDU 2732 网络流
[解题报告] Leapin' Lizards HDU 2732 网络流 题外话 在正式讲这个题目之前我想先说几件事 1. 如果大家要做网络流的题目,我在网上看到一个家伙,他那里列出了一堆网络流的题目, ...
- K - Leapin' Lizards - HDU 2732(最大流)
题意:在一个迷宫里面有一些蜥蜴,这个迷宫有一些柱子组成的,并且这些柱子都有一个耐久值,每当一只蜥蜴跳过耐久值就会减一,当耐久值为0的时候这个柱子就不能使用了,每个蜥蜴都有一个最大跳跃值d,现在想知道有 ...
- Leapin' Lizards HDU - 2732 (恶心的建图。。)
这道题其实不难...就是建图恶心了点....emm... 题意: 多源多汇 + 拆边 青蛙跳柱子, 每根柱子都有一定的承载能力, 青蛙跳上去之后柱子的承载能力就会减一,跳到边界就能活 跳不到就over ...
- Leapin' Lizards [HDU - 2732]【网络流最大流】
题目链接 网络流直接最大流就是了,只是要拆点小心一个点的流超出了原本的正常范围才是. #include <iostream> #include <cstdio> #includ ...
- K - Leapin' Lizards HDU - 2732 网络流
题目链接:https://vjudge.net/contest/299467#problem/K 这个题目从数据范围来看可以发现是网络流,怎么建图呢?这个其实不是特别难,主要是读题难. 这个建图就是把 ...
- HDU 2732 Leapin' Lizards(拆点+最大流)
HDU 2732 Leapin' Lizards 题目链接 题意:有一些蜥蜴在一个迷宫里面,有一个跳跃力表示能跳到多远的柱子,然后每根柱子最多被跳一定次数,求这些蜥蜴还有多少是不管怎样都逃不出来的. ...
- Leapin' Lizards(经典建图,最大流)
Leapin' Lizards http://acm.hdu.edu.cn/showproblem.php?pid=2732 Time Limit: 2000/1000 MS (Java/Others ...
- HDU2732:Leapin' Lizards(最大流)
Leapin' Lizards Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)T ...
随机推荐
- [云原生]Docker - 简介
目录 什么是Docker? 为什么使用Docker? 对比传统虚拟机总结 什么是Docker? Docker是一个开源项目,诞生于2013年初,最初是dotCloud公司内部的一个业务项目.它基于Go ...
- day06 python代码操作MySQL
day06 python代码操作MySQL 今日内容 python代码操作MySQL 基于python与MySQL实现用户注册登录 python操作MySQL python 胶水语言.调包侠(贬义词& ...
- 商业爬虫学习笔记day1
day1 一. HTTP 1.介绍: https://www.cnblogs.com/vamei/archive/2013/05/11/3069788.html http://blog.csdn.ne ...
- jenkins之分布式
在jenkins的slave节点安装jdk(注:slave节点不需要安装jenkins) #:安装jdk环境 root@ubuntu:/usr/local/src# ls jdk-8u191-linu ...
- jquery datatable使用简单示例
目标: 使用 jQuery Datatable 构造数据列表,并且增加或者隐藏相应的列,已达到数据显示要求.同时, jQuery Datatable 强大的功能支持:排序,分页,搜索等. Query ...
- 【编程思想】【设计模式】【结构模式Structural】MVC
Python版 https://github.com/faif/python-patterns/blob/master/structural/mvc.py #!/usr/bin/env python ...
- 实时数据同步inotify+rsync
inotify inotify是一个实时监控服务,他能实时监控服务器中的目录的变化,发现目录中变化后,在配合rsync服务推送到备份服务器上 inotify要求内核要在2.6.13或之上,通过noti ...
- Nginx 1.9.7.2 + PHP 5.6.18(FastCGI)在CentOS Linux下的编译安装
本文参考张宴的Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器(第6版)[原创]完成.所有操作命令都在CentOS 6.x 64位操作系统下实践 ...
- Mockito 入门详解
一个测试方法主要包括三部分: setup 执行操作 验证结果 public class CalculatorTest { Calculator mCalculator; @Before // setu ...
- 通过 Ajax 发送 PUT、DELETE 请求的两种实现方式
一.普通请求方法发送 PUT 请求 1. 如果不用 ajax 发送 PUT,我们可以通过设置一个隐藏域设置 _method 的值,如下: <form action="/emps&quo ...