![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
树套树
EMber _
人但有追求,世界亦会让路。
展开
-
bzoj3110[Zjoi2013]K大数查询 主席树套线段树
题意很简单,就是带修改的K大数查询。 查询自不用说,怎么修改? 由于数字都在1-n范围内,所以他的权值就是他的排名,直接插入,然后建立区间线段树,在线段树内找到修改的范围,然后用主席树区间修改。 因为多打两个else而调了一上午的sb。。。 权值线段树本来也可以,但是数据加强以后被卡了。#include<cstdio>#include<cstring>#include<algorithm原创 2017-06-08 11:12:46 · 491 阅读 · 0 评论 -
bzoj1901Zju2112 Dynamic Rankings 带修改可持久化线段树
裸的带修改主席树,套个树状数组。 所以也勉强算是个树套树,嘛不过树套树也能过就是了。#include<cstdio>#include<cstring>#include<algorithm>#define fo(i,a,b) for(int i=a;i<=b;i++)#define fd(i,a,b) for(int i=a;i>=b;i--)using namespace std;co原创 2017-06-08 17:02:23 · 390 阅读 · 0 评论 -
bzoj3196 Tyvj 1730 二逼平衡树 线段树套treap
裸的树套树,其实本来是想练习treap,后来想想算了,顺手学一波咯,反正是入门题。 t[k].s表示子树大小,t[k].w表示k这个点含有多少相同的数。#include<cstdio>#include<algorithm>#include<cstring>#define fo(i,a,b) for(int i=a;i<=b;i++)#define fd(i,a,b) for(int i=a原创 2017-07-27 16:56:33 · 406 阅读 · 0 评论 -
5296. 【清华集训2017模拟】Sequence 树套树
题意:给你一些二元组如(ai,bi)(ai,bi),每次询问l,r,x,y,k. 先把元素按照第一关键字排序,取出其中排名为x,y的,按照第二关键字排序后取出排名为k的元素。树套树很明显了其实。。 对于第一个操作,我们对于a维护一颗主席树,取出第x,y的端点,然后在外层主席树中把第x到y中的节点信息取出来然后做个线段树区间k大就好了。。#include<cstdio>#include<algo原创 2017-08-20 16:01:46 · 155 阅读 · 0 评论 -
5333. 【NOIP2017提高A组模拟8.23】大新闻 主席树/树套树
数据结构学傻选手。。。 题意:给出一个序列,每次可以在开头添加或删除,以及查询区间k大。一看添加无脑树套树,成功fst,事实上只要一个主席树就可以了,倒过来每次覆盖掉。。#include<iostream>#include<cstdio>#include<algorithm>using namespace std;int n,m,tot,top,sz;const int N=5e5+5;原创 2017-08-23 14:44:32 · 260 阅读 · 0 评论 -
bzoj2453&2120 维护队列 可修改莫队算法/树套树
题意:给你一个序列,要求区间内不相同数字个数,单点修改。 第一眼感觉就是裸的树套树啊,然后看了看题解woc怎么都是莫队啊。 算了反正就算复习莫队吧= =我也好久没打了。觉得hzwer的那个方法不算普遍,candy?的方法应该是更加模板化的吧,10^6直接记录每个颜色数量以后更新,可修改和不可修改其实没太大差别,就是要多记录一个时间还有每一次修改之前的值,这也就意味着你要把修改和询问区分开来(好像原创 2017-09-20 18:29:07 · 247 阅读 · 0 评论 -
bzoj1452[JSOI2009]Count 二维树状数组/树套树
题意:求矩阵内某个权值出现次数,可修改。 明显树套树可做,太麻烦而且v<=100,三维数组暴力bit可以做。 不能算是标准的树状数组吧= =毕竟连求和都没用到。 注意空间开太大会T。#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#define fo(i,a,b) for(int i=a;i<=b;i原创 2017-10-04 12:31:42 · 299 阅读 · 0 评论 -
JZOJ5417. 【NOIP2017提高A组集训10.24】 二维线段树
题意:给一个矩阵,q次询问子矩阵,查询最大值最小值,区间和, 每个询问的方阵的长不超过宽的两倍。屁股后面那个两倍什么玩意儿的你想用就用,我不想用,懒得打什么鬼畜的rmq,去他的,二维线段树多爽,直接过。 然后我比赛把前缀和打错了啊啊啊啊啊!!! /喷血 犯了史上最傻逼错误没有之一,更让我绝望的是,我打拍的时候直接把前缀和那个地方黏过去用所以根本没拍出来/喷血。 血的教训,希望我能铭记。#inc原创 2017-10-24 14:49:43 · 301 阅读 · 0 评论 -
bzoj2141 分块套树状数组/树套树
题意:动态维护逆序对,每次会交换两个数。 首先离散一波。 然后这题其实很显然,分块处理先,然后对于每次交换,只有在x,y之间的才有用。 那么在bl[x]+1和bl[y]-1之间的数都是整块,可以直接用bit维护。 否则就是一个块内的,就可以直接暴力维护了。 感觉我的实现姿势不好,写的很丑,看了po姐的感觉惭愧。。于是重新来一了几发。 树套树也可以做。以后回来填坑。#include<cst原创 2017-10-26 16:55:11 · 254 阅读 · 0 评论