并查集
普通的并查集没有什么好说的,对于遇到的题目,我们主要是要把它抽象成并查集的模型,比如萌萌哒这道题就是一个对于模型的抽象,相同的标记其实就是一个并查集。
然后想说一下并查集的两种合并,一种是路径压缩,一种是按秩合并。
按秩合并更多是对于可撤销并查集(还没打过板子)和可持久化并查集
然后个人觉得有一个很重要的思想就是镜像点思想,关押罪犯和Uva 11987都是这种思想
带权并查集目前只见过搬砖(bricks)那道题。
线段树
基操没有什么好说的了
线段树主要是用来维护区间信息,是一个很好的工具。
也常常用来优化时间。(比如线段树优化dp)
打标记
//为什么在Pushdown中更新下面的总值的时候为什么不把要更新的点的Pass也加进去,
//是因为在modify的时候我已经用他原来的Pass值更新过一遍了,当然不需要加进去
//即:标记下传给左右儿子时答案(比如sum)是用k的来更新,而不是k<<1和k<<1|1
加标记和乘标记
加标记:打上就行
乘标记:加标记乘上这个值,乘标记打上
pushdown:
先乘再加
加标记和赋值标记
加标记:打上就行
赋值标记:加标记去掉,打上赋值标记
pushdown:
先放赋值标记,再放加标记
翻转标记
多是在splay上面打。
但翻转标记和赋值标记加标记不冲突。
打标记基础题戳
打标记妙题戳
树链剖分
也是一个工具,把树上的转化成序列再进行处理。
分块
(暑假并没有打分块的题。。)
个人觉得更多的是对于时间空间的一种分析能力吧!
SPLAY
只会基操
等待填坑
LCT
只会基操
等待填坑
小结:
考试当然是不可能单纯考数据结构,数据结构是用来优化的。