其他分享
首页 > 其他分享> > P7448 [Ynoi2007] rdiq

P7448 [Ynoi2007] rdiq

作者:互联网

区间本质不同逆序对,要求线性空间。

\(\mathcal O(n \sqrt n \times \sqrt n)\) 应该谁都会做,而且谁都知道不能过。

回顾 P5047,考虑莫队二次离线。

记 \(f(l,r)\) 为 \([l,r]\) 中 \(>a_r\) 的数的种类数。

则区间转移从 \([l,r-1]\) 变成 \([l,r]\),令 \(r'\) 为 \(a_r\) 上一次出现的位置,则贡献为 \(f(l,r)-f(l,r')\),其他方向和一连段转移同理。

考虑到种类数难以维护,尝试通过扫描线转换为总数,问题转化为 \(\mathcal O(n)\) 次单点修改,\(\mathcal O(n \sqrt n)\) 次矩阵和查询,第一维是下标,第二维是值域,此时点的横坐标和纵坐标一一对应,即横坐标和纵坐标两两不同。

我们需要一个针对上述问题的 \(\mathcal O(\sqrt n)-\mathcal O(1)\) 数据结构。

引入二维分块,即对 \(n\times n\) 的矩阵进行适当地分块,使得块数 \(\mathcal O(\sqrt n)\) 且支持 \(\mathcal O(\sqrt n)-\mathcal O(1)\) 或 \(\mathcal O(1)-\mathcal O(\sqrt n)\)。

首先用将整个矩形用 \(n^{0.75}\times n^{0.75}\) 来分块(如图红色部分),这样总块数为 \(\mathcal O(n^{0.25}\times n^{0.25}=\sqrt n)\) 的,整块复杂度保证。

考虑分剩余块,使得较小块复杂度保证,不证:

如图,例:\(155\)。

最后考虑灰色块复杂度,由于询问横坐标和纵坐标两两不同,而灰色块宽度不超过 \(\mathcal O(\sqrt n)\),涉及的询问只有 \(\mathcal O(\sqrt n)\) 种,故散块修改 \(\mathcal O(\sqrt n)\),查询 \(\mathcal O(1)\),复杂度保证。

时间复杂度为 \(\mathcal O(n\sqrt n)\),空间复杂度为 \(\mathcal O(n)\)。

CODE

标签:rdiq,0.25,复杂度,Ynoi2007,sqrt,times,P7448,mathcal,0.5
来源: https://www.cnblogs.com/orzz/p/16371925.html