博客园 首页 私信博主 显示目录 隐藏目录 管理 动画

随笔分类 -  高级数据结构——平衡树

摘要:CDQ/Splay维护凸包。 阅读全文
posted @ 2018-12-12 22:35 SovietPower 阅读(257) 评论(5) 推荐(0) 编辑
摘要:给定长为n的字符串,m个三种操作:在p处插入字符c;将p处的字符改为c;求以两个位置i,j开头的字符串的LCPm150000阅读全文
posted @ 2018-04-10 11:31 SovietPower 阅读(162) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 对每次Merge(),Split()时产生的节点都复制一份(其实和主席树一样)。时间空间复杂度都为O(qlogq)。(应该更大些 因为rand()?内存真的爆炸。。) 对于无修改的操作实际上是可以直接赋值的,因为以后也不会去改当前树,只需要查询;修改时自会复制新节点。 虽然操作3.4. 阅读全文
posted @ 2018-03-26 07:53 SovietPower 阅读(256) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 阅读全文
posted @ 2018-02-09 13:11 SovietPower 阅读(183) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 第一次写(2017.11.7): 第二次写(2017.12.3): cpp include include const int N=1e5+5; int n,root,size,sz[N],cnt[N],t[N],son[N][2],fa[N]; inline int read() { 阅读全文
posted @ 2018-02-09 13:05 SovietPower 阅读(150) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 查找排名为k的数用平衡树 合并时用启发式合并,把size小的树上的所有节点插入到size大的树中,每个节点最多需要O(logn)时间 并查集维护连通关系即可 O(nlogn insert time) 据(主席)说按顺序插入能做到均摊O(1),中序遍历即可有序插入 1.并查集与平衡树是独 阅读全文
posted @ 2018-02-09 13:02 SovietPower 阅读(206) 评论(0) 推荐(0) 编辑
摘要:"题目链接" cpp //模板吧 include include include using namespace std; const int N=40000,INF=1e8; int n,size,root,sz[N],cnt[N],t[N],son[N][2],fa[N]; inline int 阅读全文
posted @ 2018-02-09 13:01 SovietPower 阅读(109) 评论(0) 推荐(0) 编辑
摘要:"题目链接" cpp / BZOJ1503: 3164kb 792ms/824ms(新建节点) 洛谷 : 3.06mb 320ms/308ms(前一个要慢wtf 其实都差不多,但前者好写) 四种操作: A:所有元素加v。直接TAG+=v即可 S:所有元素减v。TAG =v,如果TAG0,可是v已经要 阅读全文
posted @ 2018-02-09 12:59 SovietPower 阅读(183) 评论(0) 推荐(0) 编辑
摘要:"题目链接" or "Here" 题意:n个数,有两个操作:1.修改某个数为v;2.询问一段区间第k小的数 如果没有修改,则可以用线段树,每个节点P[a,b]存储大小为b a+1的数组,代表其中的数 同时,这个数组还是要排好序的 直接找答案很不方便,于是考虑对数组二分答案,求比它小的数的个数 关于构 阅读全文
posted @ 2018-02-09 12:56 SovietPower 阅读(275) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 附纯SplayTLE代码及主要思路: cpp / 可以看做序列有n段,Insert是每次在每一段最后插入一个元素 只有插入,没有删除,所以插入一个元素对于询问1影响的只有该元素与前边一个元素(同段)、下一段的开头元素 故只需删掉该段最后元素与下一段开头元素的差,再加入新元素与下一段开头 阅读全文
posted @ 2018-02-09 12:51 SovietPower 阅读(198) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 阅读全文
posted @ 2018-02-09 12:49 SovietPower 阅读(195) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 2017.12.24 第一次写: 时间: 2316ms (1268ms) 空间: 19.42MB (19.5MB)(O2) 注:洛谷测的时间浮动比较大 2018.2.26 第二次写: (简化许多)(两份实际行数倒差不多) 时间: 2008ms (1536ms) 空间:19.51MB ( 阅读全文
posted @ 2018-02-08 16:00 SovietPower 阅读(166) 评论(0) 推荐(0) 编辑
摘要:题目链接 //注意反转时先分裂r,因为l,r是针对整棵树的排名 #include<cstdio> #include<cctype> #include<algorithm> //#define gc() getchar() #define gc() (SS==TT&&(TT=(SS=IN)+fread 阅读全文
posted @ 2018-02-08 15:58 SovietPower 阅读(225) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 第一次(2017.12.24): cpp include include include // define gc() getchar() define gc() (SS==TT&&(TT=(SS=IN)+fread(IN,1,MAXIN,stdin),SS==TT)?EOF: SS+ 阅读全文
posted @ 2018-02-08 15:57 SovietPower 阅读(282) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示