0201听课随笔

来源:互联网 发布:python super 参数 编辑:程序博客网 时间:2024/05/05 20:20

st表

二进制分组(树状数组)——修改是不易操作



单调栈——线性

单调栈与单调队列很相似。首先栈是后进先出的,单调性指的是严格的递增或者递减。

单调栈有以下两个性质:

1、若是单调递增栈,则从栈顶到栈底的元素是严格递增的。若是单调递减栈,则从栈顶到栈底的元素是严格递减的。

2、越靠近栈顶的元素越后进栈。

单调栈与单调队列不同的地方在于栈只能在栈顶操作,因此一般在应用单调栈的地方不限定它的大小,否则会造成元素无法进栈。

元素进栈过程:对于单调递增栈,若当前进栈元素为e,从栈顶开始遍历元素,把小于e或者等于e的元素弹出栈,直接遇到一个大于e的元素或者栈为空为止,然后再把e压入栈中。对于单调递减栈,则每次弹出的是大于e或者等于e的元素。

一个单调递增栈的例子:

进栈元素分别为3,4,2,6,4,5,2,3

3进栈:(3)

3出栈,4进栈:(4)

2进栈:(4,2)

2出栈,4出栈,6进栈:(6)

4进栈:(6,4)

4出栈,5进栈:(6,5)

2进栈:(6,5,2)

2出栈,3进栈:(6,5,3)

以上左端为栈底,右端为栈顶。



线段树  超长空序列N=10^10,操作数M=10^5??

线段树+离散化  

动态开点 

 一个数据结构你不用的地方不用先开出来,用的时候再单独加上一个节点

 标记永久化

序列插入,删除   预处理预留出空

 

平衡树——二叉查找树(左儿子小,右儿子大)

红黑树,重量平衡树,替罪羊树(无旋转,重建)

set(STL)  splay treap(可支持持久化)



0 0