PST
文章平均质量分 53
酷酷的Herio
这个作者很懒,什么都没留下…
展开
-
P1383 高级打字机(PST)
P1383 高级打字机(PST) 题意 末尾插入,删除最后若干个(插入和删除)操作,单点查询。 思路 PSTPSTPST板子题,每次更新时需要维护每个结点的子树大小,然后查询的时候就根据子树大小查询。对于删除操作就是将当前版本赋值为rt[id−x−1]rt[id-x-1]rt[id−x−1]就行了。 code #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef unsigned long long原创 2021-03-20 16:48:06 · 263 阅读 · 0 评论 -
P2617 Dynamic Rankings(PST套BIT)
P2617 Dynamic Rankings(PST套BIT) 题意 单点修改+区间第k小 思路 主席树套BIT,这里与求区间第kkk小的upd和query方式有点不同,利用BITBITBIT快速求前缀和,每次更新,修改lognlognlogn棵树,每次查询,也是lognlognlogn棵树。这里是动态开点建树,不是在前一个版本的上建树,所以每次upd都是只依据rtirt_irti这个版本,进行动态开点。 时间复杂度:O(nlog2n)O(nlog^2n)O(nlog2n) 空间复杂度:O(nlog2n原创 2021-03-10 11:42:22 · 272 阅读 · 0 评论 -
主席树复习
主席树复习 介绍 主席树是可持久化线段树,又名函数式线段树,名字源于一位叫黄嘉泰(hjt),与我们已经退休的亲爱的hjt主席缩写一致,所以名为主席树~~(应该是)~~。 用途 离线区间第kkk大 区间不同数的个数 … 前置知识 权值线段树+前缀和+离散化 思想 建立nnn棵权值线段树,不是真的建(不然空间会爆炸),是在前一个版本的权值线段树上建立当前版本线段树,利用前缀和求出[l,r][l,r][l,r]区间对应的线段树,然后递归查找第kkk小。对于求区间[l,r][l,原创 2021-03-09 23:29:29 · 291 阅读 · 0 评论 -
主席树题目整理
主席树题目整理 前话:由于太菜,所以开个坑整理有关主席树的题目,可能会咕咕咕。 1.P3834 【模板】可持久化线段树 2(主席树) 区间第kkk小,转权值主席树,具体见代码。 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=2e6+5,M=N*21,inf=0x3f3f3f3f,mod=1e9+7; #define mst(a) memset(a,0,sizeof a) #define原创 2020-07-13 17:38:24 · 448 阅读 · 0 评论 -
P3919 【模板】可持久化线段树 1(可持久化数组)
P3919 【模板】可持久化线段树 1(可持久化数组) 传送门 主席树PSTPSTPST板子题,主要思路就是通过只增加更新结点上路径的结点,其他结点沿用原来的结点,每次更新和询问时间复杂度:O(logn):O(logn):O(logn)。 相应的空间也会增加nlognnlognnlogn个,所以空间要开大为O(n+nlogn)O(n+nlogn)O(n+nlogn) 时间复杂度:O(mlogn)O(mlogn)O(mlogn) #include<bits/stdc++.h> using name原创 2020-07-13 16:49:08 · 352 阅读 · 0 评论