随笔分类 -  树状结构

摘要:其实并查集顾名思义就是有“合并集合”和“查找集合”两种操作的关于数据结构的一种算法。 概述 性质 并查集算法不支持分割一个集合。 算法 用集合中的某个元素来代表这个集合,该元素称为集合的代表元。一个集合内的所有元素组织成以代表元为根的树形结构。对于每一个元素 parent[x]指向x在树形结构上的父 阅读全文
posted @ 2017-08-12 16:35 银河渡舟 阅读(299) 评论(0) 推荐(0)
摘要:倍增版LCA lac 即最近公共祖先,u和v最近公共祖先就是两节点公用的祖先中深度最大的 比如 其中 lca(1,2)=4, lca(2,3)=4, lca(3,5)=1, lca(2,5)=4; 如何求LCA? 树上倍增版: 1. 预处理每一个节点的深度 ; 1. 选定两节点; 1. 将深度大的节 阅读全文
posted @ 2017-08-12 11:42 银河渡舟 阅读(438) 评论(0) 推荐(0)
摘要:线段树の二 区间乘+区间加 具体就不解释了,看上一篇文章 放代码 注意点:!!!! 注意运算符优先级 比如: a*=b%p 是b先mod p再与a相乘 a<<1+1是1+1再a位移 a<<1=a*2 a<<1|1=a*2+1 参见:https://baike.baidu.com/item/%E8%B 阅读全文
posted @ 2017-08-11 12:08 银河渡舟 阅读(414) 评论(0) 推荐(0)
摘要:线段树の一 区间和 具体线段树讲解:(搬运)http://blog.csdn.net/zearot/article/details/48299459 一:线段树基本概念 1:概述 线段树,类似区间树,是一个完全二叉树,它在各个节点保存一条线段(数组中的一段子数组),主要用于高效解决连续区间的动态查询 阅读全文
posted @ 2017-08-11 12:00 银河渡舟 阅读(242) 评论(0) 推荐(0)
摘要:十三、左偏树(Leftist Tree)树这个数据结构内容真的很多,上一节所讲的二叉堆,其实就是一颗二叉树,这次讲的左偏树(又叫“左翼堆”),也是树。二叉堆是个很不错的数据结构,因为它非常便于理解,而且仅仅用了一个数组,不会造成额外空间的浪费,但它有个缺点,那就是很难合并两个二叉堆,对于“合并”,“ 阅读全文
posted @ 2017-03-12 19:20 银河渡舟 阅读(179) 评论(0) 推荐(0)
摘要:#include using namespace std; int heap[100010],cnt=0; void put(int x) { cnt++; heap[cnt]=x; int now=cnt; int next=cnt; while(now>1) { next=now/2; if(h 阅读全文
posted @ 2017-03-11 01:16 银河渡舟 阅读(166) 评论(0) 推荐(0)