QOJ#9776. Best Friend, Worst Enemy 题解

QOJ#9776. Best Friend, Worst Enemy 题解

题意:动态加点,每次求出 \((i,j)\) 的对数,使得 \(j\) 在曼哈顿距离上离 \(i\) 最远,在切比雪夫距离上最近。可以并列。\(n\le 4\times 10^5,V\le 10^7\)

观察性质:如果 \((i,j)\) 能成为答案,那么由于曼哈顿距离<=2*切比雪夫距离,那么最大曼哈顿距离一定不能超过最小切比雪夫距离的两倍。

先对一个状态算答案。令最远的曼哈顿距离为 \(L\),那么把平面分成若干个网格,每个网格都是 \(\frac{L}{4}\times \frac{L}{4}\)。由于存在一对曼哈顿距离为 \(L\) 的点,对于每个点 \(i\) 一定存在一个点和它的曼哈顿距离 \(\ge \frac{L}{2}\),即切比雪夫距离 \(\ge \frac{L}{4}\),也就是说每个网格中最多有一个点可能成为 \(i\),而网格个数显然为常数。

考虑加点,在 \(L\) 翻倍时重构网格,那么至多重构 \(O(\log V)\) 次,每次可能贡献的点都只有 \(O(1)\) 个,那么得到一个重要结论:可能进入过“可能成为 \(i\) 的点集”的点只有 \(O(\log V)\) 个。

实现时,先计算 \(i\) 最大曼哈顿距离和最小切比雪夫距离,合法的话加入“可能成为 \(i\) 的点集”,然后对于点集中每个数都计算一下它和 \(i\) 的贡献。最大曼哈顿距离直接枚举如何拆开绝对值即可,最小切比雪夫距离可以考虑一个暴力:\(j=i-1\to 1\),每次都和 \(j\) 计算,如果不合法则结束,否则继续。考虑划分网格的时候,因为最大曼哈顿距离 \(\ge \frac{L}{2}\),那么最小切比雪夫距离 \(\ge \frac{L}{4}\),也就是说扫到和 \(i\) 同一个网格的 \(j\) 时就会停止,那么每个网格单独分析均摊为 \(O(n)\),而网格只会翻倍 \(O(\log V)\) 次,则时间复杂度为 \(O(n\log V)\)

posted @ 2026-06-25 16:44  今天你学废了么  阅读(7)  评论(0)    收藏  举报