上一页 1 ··· 9 10 11 12 13 14 下一页
摘要: Splay,即伸展树,较为受众的平衡树,依靠双旋的速度称霸(虽然替罪羊更快,但是splay在之后有光明的未来(可以发展为LCT),总之是比treap快) 平衡树调试两大题:P3369+P6136 注: 本文采用非递归 信息维护 我们对于splay树上的一个节点维护以下信息: \(sz\) 子树大小 阅读全文
posted @ 2022-02-24 09:26 cbdsopa 阅读(59) 评论(0) 推荐(0)
摘要: #include<bits/stdc++.h> using namespace std; int n,m,tot; struct treap { int ch[3],pri,size,v; }t[100010]; void update(int x) { t[x].size=1+t[t[x].ch[ 阅读全文
posted @ 2022-02-24 09:25 cbdsopa 阅读(30) 评论(0) 推荐(0)
摘要: 因为之前学东西学得太菜所以重学了。 不说多了直接正题。 思想解析 本质上就是普通的BST,只是多了一个重建不平衡子树的重构操作。 很显然每个平衡树都有一个维护平衡的操作,那么替罪羊树的平衡操作就是重构。 最开始的时候教练说替罪羊十分暴力,一不平衡整棵树拍扁重构。但是其实并不是整棵树重构,而且操作并不 阅读全文
posted @ 2022-02-24 09:24 cbdsopa 阅读(55) 评论(0) 推荐(0)
摘要: 我们先把跳表入个门。 我们发现很多时候我们能不写平衡树就不写,像有的巨神喜欢用线段树一样(但是线段树的常数我们就不多说了),那我们就也整一点比较怪的东西。我们考虑用链表维护一些平衡树的信息。 最近学了链表之后发现这个东西就是个神,支持很多常数小的操作甚至直接配合其他算法整出各种优越于其他做法的复杂度 阅读全文
posted @ 2022-02-24 09:21 cbdsopa 阅读(135) 评论(0) 推荐(0)
摘要: 可持久化就是支持维护不同时间下的版本的数据结构啦。 那么可持久化线段树能干什么很显然了。 可持久化线段树又叫主席树,因为来历大家都知道就不多说了。 那么就直接讲核心操作了,就是克隆节点。 克隆节点 就是在修改的时候(或者维护多棵有公共节点的线段树时)使用。把有变化的节点新建,由于每次如果进行单点修改 阅读全文
posted @ 2022-02-24 09:20 cbdsopa 阅读(70) 评论(0) 推荐(0)
摘要: 我们可以令$f[i][j]\(表示区间\)[i,i+2^{j}-1]$的最大值(最小值同理) 所以有$f[i][j]=max(f[i][j-1],f[i+2^{j-1}][j-1])$ (根据上面的定义可以得出) 注:可以预处理出log2数组,进一步卡常。 #include<bits/stdc++. 阅读全文
posted @ 2022-02-24 09:18 cbdsopa 阅读(37) 评论(0) 推荐(0)
摘要: 完全顶替map const int S=10000019; struct HashMap{ std::vector<int>head,nxt; struct node{ int x,v; };std::vector<node>to; inline void clear(){ head.resize( 阅读全文
posted @ 2022-02-24 09:15 cbdsopa 阅读(36) 评论(0) 推荐(0)
摘要: 对于每一个集合维护点与根的权值。 如果对权值取模,可以得到种类并查集,相当于同时维护数与数之间的多种关系,如包含与不包含。 典型例题:P2024 [NOI2001] 食物链 两种实现方式:(以 P2024食物链 为例) 1.维护点到根的关系值,通过权值判断两点是否在同一集合。 实现如下: #incl 阅读全文
posted @ 2022-02-24 09:11 cbdsopa 阅读(44) 评论(0) 推荐(0)
摘要: 一般用于连通块查询 加入size数组可以做到查询连通块大小 #include<bits/stdc++.h> using namespace std; int fa[100010],n,m; inline int find(int x) { return fa[x]==x?x:fa[x]=find(f 阅读全文
posted @ 2022-02-24 09:10 cbdsopa 阅读(30) 评论(0) 推荐(0)
摘要: 实际上就是个链表。 #include<bits/stdc++.h> using namespace std; int n,m; vector<bool>vis; vector<int>head,next,to,val; /* head[i]存储以i为起点的第一条边的编号 next[i]存储编号为i的 阅读全文
posted @ 2022-02-24 09:07 cbdsopa 阅读(51) 评论(0) 推荐(0)
上一页 1 ··· 9 10 11 12 13 14 下一页