
树套树
C202044zxy
这个作者很懒,什么都没留下…
展开
-
[ZJOI2017] 树状数组
一、题目 点此看题 二、解法 解决这道题需要知道树状数组的原理,iii 维护的是 (i−lowbit(i),i](i-lowbit(i),i](i−lowbit(i),i] 的求和。 那么如果反过来,那么 iii 维护的是 [i,i+lowbit(i))[i,i+lowbit(i))[i,i+lowbit(i)) 的求和,所以原来求前缀和,现在求的是后缀和。 那么我们把正确的条件列出来:sum[l,r]=sum[l−1,r−1]sum[l,r]=sum[l-1,r-1]sum[l,r]=sum[l−1,r−原创 2020-11-29 11:13:00 · 322 阅读 · 0 评论 -
带插入区间K小值
一、题目 点此看题 二、解法 既然要动态插入,外层用平衡树,还有查询第kkk小,内层就用权值线段树。 内层要维护权值线段树,外层的平衡树要固定最好,我们可以选用替罪羊树,结构较为稳定,外层重构时内层重新插入就行了,复杂度O(nlog3n)O(n\log ^3n)O(nlog3n),如果用线段树合并的话可以做到O(nlog2n)O(n\log^2 n)O(nlog2n) 插入和修改都比较好做,看...原创 2020-03-14 16:57:38 · 367 阅读 · 0 评论 -
[TJOI2017]不勤劳的图书管理员
一、题目 点此看题 二、解法 很类似的题——排队 其实这道题的本质就是带修的逆序对,可以用树套树实现。 还是把交换操作理解为两次修改,每次减去原来的贡献在加上新的贡献,这里比一般逆序对要多维护一些值,要维护个数和vvv值和,计算方式就是 个数×\times×当前v+vv+vv+v之和。 这道题的难点并不是上面的解法,而是卡常,我写的树套树只得了签到分qwq。 #include <cstdio...原创 2019-12-07 14:27:25 · 169 阅读 · 0 评论 -
[国家集训队]数颜色
一、题目 点此看题 二、解法 正解应该是带修莫队,我们这里讲一下树套树的做法。 本题主要涉及的问题是去重,我们定义nxt[i]nxt[i]nxt[i]为最靠近iii位置后面颜色和iii相同的位置,统计[l,r][l,r][l,r]里面不同颜色的个数即统计∑i=lrnxt[i]>r\sum_{i=l}^{r} nxt[i]>r∑i=lrnxt[i]>r, ...原创 2019-12-05 15:07:40 · 175 阅读 · 0 评论 -
[ZJOI2013]K大数查询
一、题目 点此看题 二、解法 这道题的思路特别巧妙,树套树不一定要用区间线段树套权值线段树,还可以反过来套。 我们维护一个动态开点的权值线段树,每个点代表权值[l,r][l,r][l,r]在整个区间的出现情况,套上一个动态开点的区间线段树,操作111对权值线段树单点修改,然后对每个点的[a,b][a,b][a,b]区间修改。 操作222先算右子树根的[a,b][a,b][a,b]和,如果答案在里面...原创 2019-12-04 16:10:55 · 154 阅读 · 0 评论 -
排队
一、题目 Description 排排坐,吃果果,生果甜嗦嗦,大家笑呵呵。你一个,我一个,大的分给你,小的留给我,吃完果果唱支歌,大家乐和和。红星幼儿园的小朋友们排起了长长地队伍,准备吃果果。不过因为小朋友们的身高有所区别,排成的队伍高低错乱,极不美观。设第i个小朋友的身高为hi,我们定义一个序列的杂乱程度为逆序对的数量。幼儿园阿姨每次会选出两个小朋友,交换他们的位置,请你帮忙计算出每次交换后,序...原创 2019-12-04 12:54:53 · 1329 阅读 · 0 评论 -
[模板]二逼平衡树(树套树)
一、题目 点此看题 二、解法 所谓树套树呢?就是把两棵不同的树套在一起,以达到意想不到的效果。 对于这道题,可以线段树套平衡树,也就是每个点维护一个平衡树,下面我来分别讲解一下每种操作。 查询k在区间内的排名 把区间分解成线段树上的点,查询kkk在每个点上的排名-1然后累加,最后在加上1。 查询区间内排名为k的值 先二分一个值,然后用拿到这个值的最大排名(我没有把相同的点合并为一个点),然后找到...原创 2019-12-03 19:56:20 · 167 阅读 · 0 评论