算法/数据结构
红黑树的落叶
这个作者很懒,什么都没留下…
展开
-
[算法/数据结构] 链表和哨兵节点
1. 简介原创 2019-03-14 20:03:56 · 4594 阅读 · 2 评论 -
[算法/数据结构] 动态数组及扩容
从今天开始,每周周四写一点算法/数据结构相关的内容。1. 简介动态数组是容量可以变化的数组,它支持普通数组支持的所有操作,并额外支持扩容操作。2. 用途普通数组的容量是固定的,如果使用者不能确定数组将要容纳的元素个数,就无法使用普通数组。动态数组允许使用者随时扩容数组,因此即使使用者不能确定数组将要容纳的元素个数,只需在动态数组容量不足时及时扩容,就可以正常使用数组。3. 框架下面给...原创 2019-03-07 22:39:16 · 1299 阅读 · 3 评论 -
[算法/数据结构] 有序线性数据结构(上)
1. 线性数据结构及有序性线性数据结构的定义很简单,满足以下四个条件即可:(1) 存在一个首元素(2) 存在一个尾元素(3) 除了首元素外,所有元素有且仅有一个前驱元素(4) 除了尾元素外,所有元素有且仅有一个后继元素常见的线性数据结构有:数组、链表、队列、栈等。线性数据结构有序性的定义也很简单,如果除了尾元素,所有元素都大于等于(小于等于)其后继元素,那么可以说该线性结构是有序的。...原创 2019-03-21 13:45:13 · 902 阅读 · 1 评论 -
[ACM] 线段树经典题
POJ 2528 Mayor’s postersm次区间染色,每次染色使用的颜色都不同,颜色可以覆盖,最后询问颜色数量,区间大小n为1e7,m为1e4。做法一:使用线段树,区间染色时间复杂度O(logn),由于只询问一次颜色,可以O(n)遍历线段树暴力查询颜色数量。由于这道题有多组数据,O(n)的复杂度可能过不去,因此需要事先离散化一下,复杂度降为O(mlogm),此题离散化有陷阱,具体参见...原创 2019-04-15 09:51:06 · 729 阅读 · 1 评论 -
[ACM] 树/图上经典题
poj 3694题意:给你一个无向连通图,然后q次操作,每次在图上添加一条边,每添加一条边,输出一次图上桥的数量。点数1e5,边数2e5,q为1e3。看完题,发现做这道题需要先掌握tarjan算法。显然,整个图可以分解为多个边双连通分量组成的一个树,那么桥的个数就是树的边数。对于每次操作,如果添加的边连接了同一个边双连通分量中的两个点,则不会改变树的结构,所以,问题转化成为了添加的边连接了不同...原创 2019-05-03 17:30:45 · 701 阅读 · 2 评论 -
匈牙利算法学习笔记
匈牙利算法的正确性证明匈牙利算法通过不断对当前匹配找增广路(交错轨),删去增广路上所有在当前匹配中的边,然后给当前匹配添加增广路上的其余边,就能使当前匹配数加一。一直重复这个操作,就能求出最大匹配。证明用到两个引理。引理一:假设当前匹配M所选的点集为V,那么一定存在一个最大匹配,其所选的点集是V的一个超集。假设M已经是一个最大匹配,则已符合引理一。假设M不是最大匹配,那么任选一个最大匹配N...原创 2019-07-07 20:10:48 · 357 阅读 · 2 评论