数据结构总结
未完待续。
一定要先看清楚求什么再做题!!!
常用结构
忽视 \(\mathcal{O}(\log n)\) 与 \(\mathcal{O}(\sqrt{n})\) 的差异下,对于不可持久化的区间修改区间查询,分块不难于线段树,二者做的都是半群/幺半群上上的区间加、区间求和,想线段树能不能做前可以先想一想分块能不能做。
很多涉及集合操作的题都不能 polylog(如 本题、P9998、CF2155F 等),此时考虑根号重构、序列分块、根号分治。
虚树
一般用于合并树上的相似信息。
序列上 \(\mathcal{O}(\sqrt{n})-\mathcal{O}(1)\) 数据结构
显然是分块。
区间加、单点查
整块打标记、散块暴力改。
单点加、区间查
使用前缀和变为区间加、单点查
分块套 ST 表
整块散块均开 ST 表,ST 表上一次修改的复杂度 \(\sum\limits_{k=0}^{\log_2 L}2^k=\mathcal{O}(L)\),所以修改复杂度 \(\mathcal{O}(\sqrt{n})\),查询复杂度 \(\mathcal{O}(1)\)。
二分
整体二分
保证答案总和的二分
来自P11983 [JOIST 2025] 展览会 3 / Exhibition 3。
凸性相关
分块
序列分块
套路 1:对于不同块独立的问题,可以把整块修改、查询离线,有可能做到更优复杂度。例:P4118
杂项
套路 1:一堆东西求和为 \(\mathcal{O}(n)\),则本质不同数的个数为 \(\mathcal{O}(\sqrt{n})\)。例:字符串题目、P13130、CF1476G。

浙公网安备 33010602011771号