数据结构总结

未完待续。

一定要先看清楚求什么再做题!!!

常用结构

忽视 \(\mathcal{O}(\log n)\) 与 \(\mathcal{O}(\sqrt{n})\) 的差异下,对于不可持久化的区间修改区间查询,分块不难于线段树,二者做的都是半群/幺半群上上的区间加、区间求和,想线段树能不能做前可以先想一想分块能不能做。

很多涉及集合操作的题都不能 polylog(如 本题、P9998、CF2155F 等),此时考虑根号重构、序列分块、根号分治。

虚树

一般用于合并树上的相似信息。

OIFC 260122 T2

序列上 \(\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。

凸性相关

link

分块

序列分块

套路 1:对于不同块独立的问题,可以把整块修改、查询离线,有可能做到更优复杂度。例:P4118

杂项

套路 1:一堆东西求和为 \(\mathcal{O}(n)\),则本质不同数的个数为 \(\mathcal{O}(\sqrt{n})\)。例:字符串题目、P13130、CF1476G。

posted @ 2026-01-31 08:54  SmpaelFx  阅读(26)  评论(0)    收藏  举报