ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

P7601 [THUPC2021] 区间本质不同逆序对

2022-06-13 19:04:20  阅读:655  来源: 互联网

标签:0.25 复杂度 0.5 sqrt times mathcal THUPC2021 P7601 逆序


区间本质不同逆序对。

\(\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)\) 的,整块复杂度保证。

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

  • \(n^{0.25}\times n^{0.25}\) 个 \(n^{0.75}\times n^{0.5}\) 大小的块,蓝色部分。
  • \(n^{0.25}\times n^{0.25}\) 个 \(n^{0.5}\times n^{0.76}\) 大小的块,绿色部分。
  • \(n^{0.25}\times n^{0.25}\) 个 \(n^{0.5}\times n^{0.5}\) 大小的块,橙色部分。

如图,例:\(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

标签:0.25,复杂度,0.5,sqrt,times,mathcal,THUPC2021,P7601,逆序
来源: https://www.cnblogs.com/orzz/p/16371924.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有