线段树
文章平均质量分 52
qq_35880977
这个作者很懒,什么都没留下…
展开
-
BZOJ3626 LCA
题目大意给出一个n个节点的有根树(编号为0到n-1,根节点为0)。一个点的深度定义为这个节点到根的距离+1。 有q次询问,每次询问给出l r z,求∑ri=ldeep[LCA(i,z)]\sum_{i=l}^{r}deep[LCA(i,z)]。Solution我们可以发现,这个答案是可减得。所以对每次询问,只要求出(∑ri=1)(\sum_{i=1}^{r})-(∑l−1i=1)(\sum_{i=原创 2017-12-22 15:17:05 · 166 阅读 · 0 评论 -
BZOJ3196 二逼平衡树(线段树套线段树)
题目大意一种数据结构,维护一个有序数列,其中需要提供以下操作: 1.查询k在区间内的排名 2.查询区间内排名为k的值 3.修改某一位值上的数值 4.查询k在区间内的前驱(前驱定义为小于x,且最大的数) 5.查询k在区间内的后继(后继定义为大于x,且最小的数)Solution查询k在的排名,k的前驱,后继,能马上想到用平衡树维护。而因为是在区间中询问的,所以要用到树套树。外层维护一棵线段树,原创 2017-12-19 20:09:24 · 494 阅读 · 0 评论 -
POJ3667 Hotel
题目大意有n个本来为空的房间,有两种操作。 1:找到最左边连续长为l的一段,并占有它们。 2:将l到r区间置为空。Solution我们可以用线段树维护一段区间内最多连续的空房间数。但只记下这个答案,是无法把两个区间合并的。而只要多记下这个区间从左开始连续空房间数,从右开始连续空房间数,就能把两个区间合并了。询问时,我们可以在左右子树中分别寻找答案。但还要多考虑一种答案在两棵子树中的情况,这个答案原创 2017-12-18 17:57:01 · 118 阅读 · 0 评论 -
[BZOJ5110]Yazid 的新生舞会
题目大意有一个长度为n的序列A,下标从1至n。显然地,这个序列共有n(n+1)2\frac{n(n+1)}{2}个子区间。问有多少个子区间[l,r],对于这个子区间[l,r],如果该子区间内的众数在该子区间的出现次数严格大于r−l+12\frac{r-l+1}{2}(即该子区间长度的一半)。Solution对于序列中的每一种数分别考虑。对于每一种数x,如果有数组a,a[i]=1表示下标为i的位置上是原创 2018-03-06 12:23:20 · 400 阅读 · 0 评论