![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
权值线段树
ylsoi
这个作者很懒,什么都没留下…
展开
-
[bzojnoip十连测]小P的单调序列——权值线段树优化DP
Description 小P最近喜欢上了单调数列,因为他觉得单调的数列具有非常多优美的性质。 经过 小P复杂的数学推导,他计算出了一个单调增数列的艺术价值等于该数列中所有数的总 和。 并且以这个为基础,小P还可以求出任意一个数列的艺术价值,它等于将这个数列 阴次划分为若干个极长单调区间(相邻两个单调区间的单调性必须不相同)后,每个单 调区间中元素总和的平均值。 比如对于数列 3 7 9...原创 2018-05-22 14:19:21 · 351 阅读 · 0 评论 -
[bzoj4756][Usaco2017 Jan]Promotion Counting——线段树合并入门
题目大意: n只奶牛构成了一个树形的公司,每个奶牛有一个能力值pi,1号奶牛为树根。 问对于每个奶牛来说,它的子树中有几个能力值比它大的。 思路: 用权值线段树来查询子树中比它大的结点有多少个。但是权值线段树需要不断地合并。 于是在递归的时候线段树合并就好了。 #include<bits/stdc++.h> #define REP(i,a,b) for(int i...原创 2018-08-05 11:14:31 · 221 阅读 · 0 评论 -
[bzoj2212][Poi2011]Tree Rotations——线段树合并+逆序对计算
题目大意: 现在有一棵二叉树,所有非叶子节点都有两个孩子。在每个叶子节点上有一个权值(有n个叶子节点,满足这些权值为1..n的一个排列)。可以任意交换每个非叶子节点的左右孩子。 要求进行一系列交换,使得最终所有叶子节点的权值按照遍历序写出来,逆序对个数最少。 思路: 考虑交换两个相邻两个区间前后的变化,发现变化的只是分别在两个区间之内的逆序对,对外面的逆序对和某一个区间里面的逆序对个数是没...原创 2018-08-05 20:01:55 · 350 阅读 · 0 评论 -
主席树学习笔记
主席树: 主席树是一种支持查询历史版本的线段树,需要动态开点,这里以主席树静态查找区间第K大为例(因为刚学只会这个)。 算法: 静态查找区间第K大其基本思想是构造不同前缀的权值线段树。想象一下如果我们拥有了每一个前缀的权值线段树,那么我们只要利用区间左端点和右端点权值线段树的信息就可以在权值线段树上实现二分查找。 但是每一个前缀开一个权值线段树显然空间开不下,所以要用到主席树。这里不同...原创 2018-08-13 18:21:10 · 129 阅读 · 0 评论 -
[bzoj2588]Count on a tree——树上主席树
题目大意: 给定一棵树,然后询问对于(x,y)(x,y)(x,y)上的路径中的点的权值第k小的值。 思路: 可以用主席树来维护,其实就类似一个树上差分。想一下主席树静态查询区间第k小时是用r的权值线段树减去l-1的权值线段树。这里也类似,我们把每一个结点从它到根的所有的点都放到一个权值线段树中,那么就可以用u+v-lca-fa[lca]的权值线段树来代替。 #include<bi...原创 2018-08-13 19:24:08 · 207 阅读 · 0 评论 -
主席树区间动态第K大学习笔记
模板题: bzoj1901 学习笔记: 静态的区间第K大主席树用到了这么一个思想,就是维护不同的前缀权值线段树,利用不同区间的权值线段树可减的思想来达到查询某一区间的权值线段树的目的。 但是一旦要求修改的话,利用上面那种维护前缀权值线段树就有点麻烦了,因为修改一个值之后所有包括了这个值的前缀权值线段树都要修改,复杂度显然是有问题的。 然后动态的主席树便换了一种思路,想一想如果只是动态的前...原创 2018-08-17 09:02:26 · 413 阅读 · 0 评论