摘要: 并查集 [TOC] 定义 并查集是一种维护集合的数据结构,并: ,查: ,集: 。 并查集支持下面两种操作: 1. 合并:合并两个集合 2. 查找:判断两个元素是否在一个集合 并查集使用一个数组实现 其中 father[i] 代表元素 i 的父亲节点,而父亲节点本身也是这个集合内的元素。 如果 说明 阅读全文
posted @ 2020-03-23 11:25 南风sa 阅读(393) 评论(0) 推荐(1) 编辑
摘要: 堆 [TOC] 堆是一棵完全二叉树,每个节点的值都不小于(不大于)其左右孩子结点的值。 如果父亲结点的值大于等于孩子结点的值,那么称这样的堆为大顶堆,这时每个节点的值都是以它为根结点的子树的最大值;反之为小顶堆。 堆的实现 由于堆是一棵完全二叉树,所以我们可以用数组来实现一棵完全二叉树,也就能实现堆 阅读全文
posted @ 2020-03-23 11:24 南风sa 阅读(187) 评论(1) 推荐(0) 编辑
摘要: 哈夫曼树 Huffman Tree [TOC] 定义 在一个果园里,小明已经将所有的水果打了下来,并按水果的不同种类分成了若干堆,小明决定把所有的水果合成一堆。 每一次合并,小明可以把两堆水果合并到一起,消耗的体力等于两堆水果的重量之和。 当然经过 n‐1 次合并之后,就变成一堆了。小明在合并水果时 阅读全文
posted @ 2020-03-23 11:23 南风sa 阅读(720) 评论(0) 推荐(0) 编辑
摘要: 背包问题 多阶段动态规划问题 有一类动态规划可解的问题,它可以描述称为若干有序的阶段,且每个阶段的状态只和上一个阶段的状态有关,一般把这类问题称为多阶段规划问题。 01 背包问题 01背包问题描述如下: 有 n 件物品,每件物品的重量为 w[i],价值为 c[i]。现有一个容量为 V 的背包,问如何 阅读全文
posted @ 2020-03-23 10:54 南风sa 阅读(191) 评论(0) 推荐(0) 编辑