随笔分类 -  数据结构

摘要:可持久化线段树 静态区间第 $k$ 小 给定 $n$ 个整数构成的序列,将对于指定的闭区间查询其区间内的第 $k$ 小值。 权值线段树 权值线段树就是对一个值域上值的个数进行维护的线段树。 举个栗子,对于1,1,2,3,3,3,4,4。 在权值线段树上如何求第k小的值? 显然如果左子树的值大于k的话 阅读全文
posted @ 2020-01-25 16:48 hezongdnf 阅读(177) 评论(0) 推荐(0)
摘要:ST表 与线段树相比,预处理复杂度同为O(nlogn),查询时间上,ST表为O(1),线段树为O(nlogn) 适合求区间最值问题,不适合求区间和 c++ int a[maxn],st[maxn][20]; void rmq(int n) //建立st表 { for(int j = 1; (1 阅读全文
posted @ 2020-01-25 09:40 hezongdnf 阅读(289) 评论(0) 推荐(0)
摘要:Problem Description https://www.luogu.com.cn/problem/P1972 HH 有一串由各种漂亮的贝壳组成的项链。HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义。HH 不断地收集新的贝壳, 因此,他的项链变得 阅读全文
posted @ 2020-01-25 09:40 hezongdnf 阅读(145) 评论(0) 推荐(0)
摘要:树状数组 一般求解带修改的区间查询。比如带修改的区间和问题。 lowbit lowbit(x) 二进制下x最低位的1所对应的数,返回的是$2^k$。 比如8(1000)返回8,7(0111) 返回1。 比如说要更新2这个点,首先 更新,然后 更新,然后 更新... 更新7这个点,首先 更新,然后 更 阅读全文
posted @ 2020-01-25 09:39 hezongdnf 阅读(124) 评论(0) 推荐(0)
摘要:树链剖分 轻重链剖分 利用dfs序,不停的跳链的顶端,直到跳到同一条重链上。 阅读全文
posted @ 2020-01-22 11:45 hezongdnf 阅读(137) 评论(0) 推荐(0)
摘要:线段树 线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。 对于线段树中的每一个非叶子节点[a,b],它的左儿子表示的区间为[a,(a+b)/2],右儿子表示的区间为[(a+b)/2+1,b]。因此线段树是平衡二叉树,最后的子节点数目为N,即 阅读全文
posted @ 2020-01-22 11:23 hezongdnf 阅读(153) 评论(0) 推荐(0)