CF576C 题解
一道有趣的构造题,只需要了解莫队的复杂度就可以轻松过题。
我们采用莫队思想,按照 $\sqrt {10^6}$ 给权值分块,按照莫队的排序方法,这样可以构造出 $\sum\limits_{i=2}^N |x_{p_i} - x_{p_{i-1}}| + |y_{p_i} - y_{p_{i-1}}| \leq 3.5 \times 10^9$ 的方案。
来看看是怎么算出来的(下文中的“块”指的是左端点同个块的那些点)。左端点贡献不超过 $10^6*10^3$,即点数乘以每个点最多的贡献。
然而右端点可能在每到达一个新的块中时会产生 $10^6$,这种情况最多有 $10^3$ 种,再考虑块中的移动,每个块内部的右端点会产生块的个数乘以权值范围的贡献即 $10^3*10^6$。
上述三者相加是 $3 \times 10^9$,但由于有地方会多出一些,故而 $3 \times 10^9$ 变成了 $3.5 \times 10^9$。至于哪里多算,下面会提到。
我们考虑怎么优化右端点,这时会自然而然地想到莫队奇偶性优化,使一个块到一个新的块这个过程中右端点的大幅度移动消失了。具体的,右端点的移动只剩每个块内部的右端点会产生块的个数乘以权值范围的贡献 $10^3*10^6$ 了。
再看哪里估计少了,发现左端点一个块移动到另一个块时,最多会有 $2 \times 10^3$ 的移动距离,不过这样的贡献最多只有 $10^3$ 个,也就是块数个。
代码。