数据结构套路大赏

现在感觉没啥写的,先留着以后会填的(

一、线段树:

1、线段树维护哈希

2、线段树套DSU(其实没啥用)

二、平衡树:

 

三、树状数组:

1、树状数组二分(倍增),常数小,而且好写

四、分块:

 

五、杂项:

1、留意“取模”类的修改操作,每次取模会至少减半,哪怕看似暴力的解法也很有可能不高于nlogn

1.5、取根号类操作,每个数至多操作loglogw次

2、扫描线,将询问离线下来,扫描线消掉1side,问题简化。或者将区间[l,r]的区间定位为平面上的点(l,r),很多区间子区间询问转化为二维数点问题

3、持久化的骗局:看似持久化,但是不强制在线,那可以把操作树建出来,扫一遍欧拉序就离线完成完全持久化

3.5、持久化:路径复制(优点:可以支持完全持久化,缺点:代码较长(不好调试),常数一般较大,且一般的实现为logn),肥节点(优点:好写,常数小,复杂度一般为log(单个节点数据变化次数)(通常是loglogn),缺点:不容易支持完全持久化(如果你想写动态标号法+veb树当我没说)(但是看着麻烦也还是loglogn,理论上薄纱了路径复制)

4、启发式合并,不用多说了

5、并查集维护nxt数组(下一个合法操作位置),路径压缩,实现均摊logn

6、画(胡)变化的函数图像,找性质

posted @ 2024-02-11 11:38  ddt_cai  阅读(22)  评论(0)    收藏  举报