题解:P16293 [蓝桥杯 2026 省 Java A 组] 奇怪的地图
123xce
·
·
题解
这道题的核心是六边形网格的距离公式,再结合高效求最大值的方法。
核心
不难得出:
对于六边形网格上两点:
A(x_1,y_1)
B(x_2,y_2)
令 dx=x_1−x_2,dy=y_1−y_2,
两点距离公式:
S=\frac{|dx|+|dy|+|dx−dy|}{2}
这个公式是核心。
代入 s=−x−y,
化简:
\begin{aligned}
S &=\frac{|dx|+|dy|+|-dx−dy|}{2}\\
&=\frac{|dx|+|dy|+|dx+dy|}{2}
\end{aligned}
我们可以把公式整理成更直观的形式:
S=\max(|dx|,|dy|,|dx−dy|)
观察距离公式:
S=\max(|x_1−x_2|,|y_1−y_2|,|(x_1−y_1)−(x
_2−y_2)|)
要让这个值最大,只需要求 3 组值的全局最大差值:
$y$ 的最大值减去 $y$ 的最小值。
$(x−y)$ 的最大值减去 $(x−y)$ 的最小值。
**最终答案就是这 $3$ 个值里的最大值。**
## 最后:
**祝大家在蓝桥杯中取得好成绩!!!**