AGC062D

· · 题解

首先曼哈顿转切比雪夫,每次可以走到一个正方形边框上。有解的一个必要条件是 \sum D_i\ge 2\max{D_i},否则走一次 \max{D_i} 长的步永远都回不到原点;其实这也是充分的,我们先给出一个重要引理:

证明:

再回头看最开始的结论,我们只需要通过一些不含 \max{D_i} 的步走到 \max{D_i} 的正方形边框上,然后可以浪费掉一些无用步(相当于在当前位置每次画一个正方形边框,然后走到其和 \max{D_i} 的正方形边框相交处,由于其边长 \le \max{D_i} 肯定有交),最后再通过 \max{D_i} 一步回到原点。进一步的,可以发现最终答案 r\left[\frac{\max{D_i}}{2},\max{D_i}\right] 中,因为 r<\max{D_i} 无论如何走一个 \max{D_i} 都走出正方形了。

接下来考虑 r 的判定性问题。继承上面的思路,走的过程形如:

那其实就是找两条无交的从原点到 r 边框上的路径了(其实应该要求终点相同,但我们下面仍然会说明,如果可以走到边框,那就可以走到边框上的任意点)。考察一个集合 S 是否可以通过其的一个子集走到 r 的边框上:

由于 d\le \max{D_i}\le 2r\Rightarrow d-r\le r,即当 \sum\limits_{x\in S,x\le r}x 相同时,有 >r 的步候选总比没有 >r 的步限制更松。从小到大扫 r,我们想要找到两条合法路径,肯定是 >r 的数中最小值和次小值留分别给两条路径,对于 \le r 的数做一个背包即可,容易判定合法性。复杂度 \mathcal{O}\left(\frac{nV}{w}\right)