Description
给你一个\(n\times n\)的网格,每个点要么是空地要么是障碍。
然后进行\(q\)次询问,每次询问就是要求你在一个格子\((x, y)\)处安排一个以格子\((x, y)\)的中心为中心的边长尽可能长的格点正方形,然后上下左右移动(每次移动一格)使其中心落在另一格子\((u, v)\)处,注意整个过程中不能撞到障碍格子内部。
\(2\leq n\leq 1000, 1\leq q\leq 3\times 10^5\)。
Solution
先考虑求在格子\((x, y)\)最大能放多大的正方形吧。
要求不能碰到障碍,换言之若对于任意障碍\((u, v)\),正方形边长若大于\(\max(|u - x|, |y - v|)\)就会出事(不就是切比雪夫距离吗)。因此我们要对所有的这种值取个最小,这很容易用多源BFS完成……
再往下就处理一下边权,然后就相当于询问瓶颈路了……因此求下最小瓶颈生成树,倍增回答即可。
Code
1 |
|