7月18日

数据结构

今天主要讲了数据结构中的并查集,线段树和平衡树,还有很多很多很多的数据结构题。

然后很多题都刷新了我对信息竞赛的理解,所以有必要总结学到的知识和技巧。


 

首先,并查集。

模板就不说了,主要是一些技巧。

1. 带权并查集  例题:

2. 启发式并查集,复杂度O(nlongn)

简单来讲就是不路径压缩的并查集,然后在每次合并的时候将树规模小的连到规模大的(size)上。

例题:


 

然后,线段树。

一. 线段树模板

1. 线段树单点修改/查询  PASS

2. 线段树区间修改/查询  区间加  PASS  区间乘

二. 线段树的运用

1. 一些(区间)题目常用思路就是枚举右端点,同时维护一个s数组(用线段树),这个维护需要因题置疑,有许多不同的维护方法,这两天就碰到了三四道这个思路的题。  例题:

2. 线段树+并查集  例题:

3. 线段树保存两种信息,总之花式线段树  例题:

4. 整体二分区间,二分加线段树  例题:区间第k大数(K-th number)

5. 线段树的启发式合并  例题:


平衡树。

一. 平衡树模板
1. Treap  PASS

2. Splay

二. 平衡树的运用

1. 很多,是的。  例题:NOI2005维护序列


其他小技巧和小算法

1. 尺取法  例题:面积并问题

2. 从O(n)复杂度到O(logn)的常见思路,二分,线段树,树状数组,平衡树。


例题总会:

1. K-th number的一系列变形

2. 艹,不记得了

 


最后,要会的STL:

1. set

2. vector

3.map

4. multiset

posted @ 2017-07-18 18:51  GSHDYJZ  阅读(146)  评论(0编辑  收藏  举报