Loading

浅总结:偏序问题

在线做法

· 树套树

常用树状数组(值域/区间)套线段树(区间/值域),另外根据需要有线段树套平衡树,树状数组套主席树等(查询区间第 \(k\) 小)。类似于二维数点,但是相较于 \(KDT\) 等方式可以灵活利用 \(tag\),维护上可能更便捷或是有较多优化空间,对于维护值域来说可能是最直接的方式

例题:[HEOI2016/TJOI2016] 序列[AHOI2013] 作业

· 二维线段树/树状数组

虽然感觉跟偏序本身关系不大,就是很直接的前缀维护或者二维区间维护

例题:Iahub and Xors

· \(KDT\)

本来就是被设计用于维护高维信息的数据结构,然而邻域查询的复杂度从 \(O(n \log{n})\)\(O(n^{1 - \frac 1k})\) 不等,容易被卡,不过相对无脑且部分情况下比树套树更好写,更套路

例题:(同树套树做法例题,万幸没有被卡)

离线做法

貌似只要离线一定可以降低一维复杂度(兼或)优化掉一维空间

· \(cdq\)分治

偏序问题里的经典做法,注意统计贡献时前后两端区间是否有先后顺序要求(例如优化 \(LIS\) 的转移时必须先处理完左区间否则答案偏小)

例题:[HEOI2016/TJOI2016] 序列

· 莫队

而且还可以回滚,带修,二次离线,在时间复杂度允许的情况下是一个性价比很高的选择,可以不用考虑区间贡献更复杂的继承方式,剩下的数据结构维护上思维难度没有直接上树套树来的大

例题:Gty的妹子序列[AHOI2013] 作业

然后剩下都是根据需要套数据结构

提醒

一般是在三维以下信息的维护中用这些做法普遍优于暴力,但要是维数太高还不如直接上玄学 \(KDT\) 或者可以的话直接 \(O(n^{2})\) 暴力统计

posted @ 2024-08-29 21:38  HRcohc  阅读(6)  评论(0编辑  收藏  举报