树套树
fyc_kabuto
一个蒟蒻程序员
展开
-
3065: 带插入区间K小值
快捷版题意:带插入、修改的区间k小值在线查询。我太菜了啊啊啊啊啊啊啊啊啊。看题解+膜代码用了一上午,又写+调了一上午,起码改了十几个地方。思路:替罪羊树套权值线段树。首先平衡树当然是维护区间,每个节点上的线段树代表其子树的权值状态。首先是插入操作。因为全程%hzwer所以抄了他的打法。找到平衡树中位置为k-1的节点,跳右儿子,这时传进去的k值一定为0,所以能一直跳k-1的右儿子原创 2017-07-10 15:32:41 · 669 阅读 · 0 评论 -
3110: [Zjoi2013]K大数查询
题目大意,带该段的区间第k大。注意,一个位置上可以有多个数的,更改操作是增加新数,而不是覆盖。备用知识:标记永久化点击打开链接(不用的话应该也可以,但空间会大)然后就上权值线段树套区间线段树。不修改的区间第k小是例题(类似二分),树套树可以解决修改的问题。我们可以c+n+1转正,然后把求区间第k大变成(len-k+1)小。答案再减回来就行了。要用long longc原创 2017-07-14 09:52:22 · 317 阅读 · 0 评论 -
3295: [Cqoi2011]动态逆序对
题目大意:多次删点,每次统计下逆序对。人生第一道树套树。树状数组套位置线段树。先预处理出s1[i],s2[i],即第i为前比a[i]大的数,于i后比a[i]小的数。那么每次ans-=s1[i]+s2[i]+这些点中已被删去的点。然后把删掉的加到树套树就行了。当然也可以直接在树套树上加点,删点,但空间更大,时间更慢,不知道能不能跑过去。code:#include#inc原创 2017-07-07 08:35:33 · 347 阅读 · 0 评论 -
bzoj 4991: [Usaco2017 Feb]Why Did the Cow Cross the Road III
题意:两列n的排列,相同的数连边,假如一对数的差>k>k且有交叉,ansans++,求答案。题解:容易想到,按数从小到大加入,统计现在有多少数与当前数交差,再加i-k。 至于统计乱搞一下,正解是cdq,但本蒟蒻只会树套树,反正空间放开也过的了。官方数据都过了,精神AC。 为什么每次树套树都出SB错误啊啊啊啊。 code:#include<cstdio>#include<cstdlib>#i原创 2017-09-04 22:05:02 · 716 阅读 · 0 评论 -
bzoj 2877: [Noi2012]魔幻棋盘
口头AC原创 2017-10-12 09:15:41 · 359 阅读 · 0 评论 -
3196: Tyvj 1730 二逼平衡树
题目比较简洁:您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:1.查询k在区间内的排名2.查询区间内排名为k的值3.修改某一位值上的数值4.查询k在区间内的前驱(前驱定义为小于x,且最大的数)5.查询k在区间内的后继(后继定义为大于x,且最小的数)又有区间,又有排名,所以明显是树套树了,反正我写了区间线段树套平衡树。相当于在每个原创 2017-07-13 07:58:08 · 233 阅读 · 0 评论