Loading docs/ds/index.md +2 −103 Original line number Diff line number Diff line author: HeRaNO, Zhoier, hsfzLZH1 ## 数据结构 数据结构是在计算机中存储、组织数据的方式。小到变量、数组,大到线段树、平衡树,都是数据结构。 - Q:什么是数据结构? - A:简单地讲,数据结构就是数据的储存方式。 - Q:数据结构有什么用呢? - A:对于给定的数据,通过使用不同的数据结构储存,可以获得不同的效果。例如,数组便于快速访问某一特定位置的值,但会在插入、删除操作中浪费大量时间;链表则便于插入、删除单个元素,但用于访问特定位置的效率却不容乐观。线段树,平衡树则可以加速对于特定信息的检索与维护,如区间和,排名等。灵活地使用数据结构可以对代码的运行效率产生不可忽视的影响。 - Q:在算法竞赛中,数据结构有那些考察点呢? - A:算法竞赛中,数据结构的考察主要分为两类: 1. 考察对于特定信息的检索与维护和对特定操作的支持,例如 [「SCOI2010」序列操作](https://www.luogu.org/problem/P2572) 2. 使用合适数据结构加速信息检索,优化算法复杂度,例如 [「APIO2012」派遣](https://www.luogu.org/problem/P1552) - Q:有没有一种完美的数据结构可以搞定所有事情啊? - A:很遗憾地告知您: **并没有,所以要努力学习下面的内容呢!** - [x] STL - [x] STL 简介 - [x] vector - [x] priority_queue - [x] map - [x] bitset - [x] pb_ds - [x] pb_ds 简介 - [x] \_\_gnu_pbds::priority_queue - [x] 栈 - [x] 队列 - [x] 链表 - [x] 哈希表 - [x] 并查集 - [x] 堆 - [x] 堆简介 - [x] 二叉堆 - [x] 配对堆 - [x] 左偏树 - [x] 块状数据结构 - [x] 分块思想 - [x] 块状链表 - [x] 块状数组 - [x] 树分块 - [x] 单调栈 - [x] 单调队列 - [x] ST 表 - [x] 树状数组 - [x] 线段树 - [x] 线段树 & 区间历史最值 - [x] 划分树 - [x] 平衡树 - [x] 树套树 - [x] K-Dtree - [x] 可持久化数据结构 - [x] 珂朵莉树 - [x] 动态树 - [x] Link Cut Tree - [x] Euler Tour Tree - [x] Top Tree - [x] 析合树 程序运行离不开数据结构,不同的数据结构又各有优劣,能够处理的问题各不相同,而根据具体问题选取合适的数据结构,可以大大提升程序的效率。所以,学习各种各样的数据结构是很有必要的。 Loading
docs/ds/index.md +2 −103 Original line number Diff line number Diff line author: HeRaNO, Zhoier, hsfzLZH1 ## 数据结构 数据结构是在计算机中存储、组织数据的方式。小到变量、数组,大到线段树、平衡树,都是数据结构。 - Q:什么是数据结构? - A:简单地讲,数据结构就是数据的储存方式。 - Q:数据结构有什么用呢? - A:对于给定的数据,通过使用不同的数据结构储存,可以获得不同的效果。例如,数组便于快速访问某一特定位置的值,但会在插入、删除操作中浪费大量时间;链表则便于插入、删除单个元素,但用于访问特定位置的效率却不容乐观。线段树,平衡树则可以加速对于特定信息的检索与维护,如区间和,排名等。灵活地使用数据结构可以对代码的运行效率产生不可忽视的影响。 - Q:在算法竞赛中,数据结构有那些考察点呢? - A:算法竞赛中,数据结构的考察主要分为两类: 1. 考察对于特定信息的检索与维护和对特定操作的支持,例如 [「SCOI2010」序列操作](https://www.luogu.org/problem/P2572) 2. 使用合适数据结构加速信息检索,优化算法复杂度,例如 [「APIO2012」派遣](https://www.luogu.org/problem/P1552) - Q:有没有一种完美的数据结构可以搞定所有事情啊? - A:很遗憾地告知您: **并没有,所以要努力学习下面的内容呢!** - [x] STL - [x] STL 简介 - [x] vector - [x] priority_queue - [x] map - [x] bitset - [x] pb_ds - [x] pb_ds 简介 - [x] \_\_gnu_pbds::priority_queue - [x] 栈 - [x] 队列 - [x] 链表 - [x] 哈希表 - [x] 并查集 - [x] 堆 - [x] 堆简介 - [x] 二叉堆 - [x] 配对堆 - [x] 左偏树 - [x] 块状数据结构 - [x] 分块思想 - [x] 块状链表 - [x] 块状数组 - [x] 树分块 - [x] 单调栈 - [x] 单调队列 - [x] ST 表 - [x] 树状数组 - [x] 线段树 - [x] 线段树 & 区间历史最值 - [x] 划分树 - [x] 平衡树 - [x] 树套树 - [x] K-Dtree - [x] 可持久化数据结构 - [x] 珂朵莉树 - [x] 动态树 - [x] Link Cut Tree - [x] Euler Tour Tree - [x] Top Tree - [x] 析合树 程序运行离不开数据结构,不同的数据结构又各有优劣,能够处理的问题各不相同,而根据具体问题选取合适的数据结构,可以大大提升程序的效率。所以,学习各种各样的数据结构是很有必要的。