#lg3438. [POI 2006] ZAB-Frogs青蛙

    ID: 3169 传统题 3000ms 64MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>动态规划 DP二分单调队列分治广度优先搜索 BFS动态规划优化斜率优化李超线段树决策单调性省选/NOI−

[POI 2006] ZAB-Frogs青蛙

[AdditionalFile5497.zip](file://AdditionalFile5497.zip?type=additional_file)

P3438 [POI 2006] ZAB-Frogs

题目描述

给定一个网格图,其中有一些坏点,要求使起点到终点的路径上的所有点到离该点最近的坏点的最小距离距离最大,求这个最大值。

输入格式

第一行输入包含两个整数:wxw_x 和 wyw_y,以一个空格分隔,它们分别表示网格的宽度和长度(满足 2≤wx,wy≤10002 \le w_x,w_y \le 1000)。

第二行输入包含四个整数:pxp_x、pyp_y、kxk_x 和 kyk_y,以空格分隔;其中 (px,py)(p_x,p_y) 是路径的起点,(kx,ky)(k_x,k_y) 是路径的终点(满足 1≤px,kx≤wx1 \le p_x,k_x \le w_x,1≤py,ky≤wy1 \le p_y,k_y \le w_y)。

第三行输入包含一个整数 nn,表示有 nn 个坏点的坐标(满足 1≤n≤wx⋅wy1 \le n \le w_x \cdot w_y)。任意两个坏点不会占据同一个位置,并且它们都不会位于 (px,py)(p_x,p_y) 或 (kx,ky)(k_x,k_y)。

输出格式

在标准输出的第一行也是唯一一行中,应输出一个整数,即答案的平方。如果路径无法避免直接经过坏点,则结果为 00。

输入输出样例 #1

输入 #1

5 5
1 1 5 5
2
3 3
4 2

输出 #1

4

#5497. 「POI2006 R1」青蛙 Frogs

标签: 传统 | 时间限制: 3000 ms | 内存限制: 64 MiB |

题目描述

题目译自 XIII OI Olimpiada Informatyczna – I etap Żaby

字节国(Bajtocja)爆发了一场蛙灾,它们正在摧毁所有的庄稼。农夫 Bajtazar 决定使用特殊的驱赶器来对抗这些青蛙,他将这些驱赶器布置在田地的选定位置。每只青蛙在从一个地方移动到另一个地方时,都会尽量与驱赶器保持尽可能远的距离,也就是说,它会最大化其与最近驱赶器的距离。

Bajtazar 的田地呈矩形。青蛙在田地上沿着与田地边缘平行的方向跳跃,每次跳跃的距离为一个单位长度。对于一条路径而言,其与驱赶器的距离被定义为:青蛙在该路径上所有位置中,离各个驱赶器距离的最小值。

Bajtazar 知道青蛙最常从哪里跳到哪里,并且正在尝试不同的驱赶器布局。他请求你的帮助,希望你能编写一个程序,对于给定的驱赶器布局,计算出青蛙在田地上从一个地点移动到另一个地点的过程中,能够保证的与驱赶器之间的最大安全距离。

请编写一个程序,实现以下功能:

  • 从标准输入读取田地的大小、驱赶器的位置以及青蛙的起始和终点位置,
  • 计算出青蛙在其路径上能够保证的、与最近驱赶器之间的最大距离,
  • 将所找到距离的平方输出到标准输出。

输入格式

输入的第一行包含两个整数 wx,wyw_x, w_y (2≤wx,wy≤1000)(2 \le w_x, w_y \le 1000),由单个空格隔开,表示田地的宽度和长度。

输入的第二行包含四个整数 px,py,kx,kyp_x, p_y, k_x, k_y (1≤px,kx≤wx,1≤py,ky≤wy)(1 \le p_x, k_x \le w_x, 1 \le p_y, k_y \le w_y),由单个空格隔开;(px,pyp_x, p_y) 是青蛙的起始位置,(kx,kyk_x, k_y) 是青蛙的终点位置。

输入的第三行包含一个整数 nn (1≤n≤wx⋅wy)(1 \le n \le w_x \cdot w_y),表示布置在田地上的驱赶器数量。

接下来的 nn 行包含各个驱赶器的坐标。对于 1≤i≤n1 \le i \le n,第 i+3i+3 行包含两个整数 xix_i 和 yiy_i (1≤xi≤wx,1≤yi≤wy)(1 \le x_i \le w_x, 1 \le y_i \le w_y),由单个空格隔开,表示第 ii 个驱赶器的坐标。每个驱赶器都位于不同的位置,且没有任何驱赶器位于起点 (px,py)(p_x, p_y) 或终点 (kx,ky)(k_x, k_y)。

输出格式

输出的第一行且仅一行应包含一个整数,即青蛙必须接近的最近驱赶器的最大可能距离的平方。如果青蛙无法避免直接跳到某个驱赶器上,输出 00。

样例

输入

5 5
1 1 5 5
2
3 3
4 2

输出

4

青蛙的最优路径如下:

zabzad-en.png