![](https://img-blog.csdnimg.cn/20190927151053287.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
------Data Structure-------
文章平均质量分 73
数据结构
aWty_
在 AFO 的边缘徘徊的 OIer
展开
-
fhqTreap
fhqTreapsplayfhqTreap作为一种平衡树,她有很多优势,最重要的就是她好理解,码量小,而且实测下来还比splay快,最重要的是她不用旋转!!!所以我们来学fhqTreap吧qwq。原创 2022-08-31 15:34:37 · 234 阅读 · 0 评论 -
整体二分?
整体二分原创 2022-07-25 19:43:22 · 184 阅读 · 0 评论 -
[Vani有约会]雨天的尾巴
树上差分+线段树合并原创 2022-07-25 15:50:10 · 164 阅读 · 0 评论 -
CSP2021 T3 回文
csp2021T3回文原创 2022-07-21 22:21:18 · 382 阅读 · 0 评论 -
Splay补完计划
splay原创 2022-07-18 14:08:01 · 107 阅读 · 0 评论 -
浅谈珂朵莉树
珂朵莉树!!!原创 2022-06-25 08:11:54 · 652 阅读 · 2 评论 -
[十二省联考 2019] 异或粽子
题目大意 给一个长度为 nnn 的数组 {an}\{ a_n \}{an} 并给定一个整数 kkk, 求由 kkk 个不同的子区间的异或和之和的最大值。算法分析 先做一个前缀的异或和:si=⨁i=1nsi s_i = \bigoplus_{i = 1}^n s_i si=i=1⨁nsi 类似于前缀和我们就有:⨁i=lrai=sr−sl−1 \bigoplus_{i = l}^ra_i = s_r - s_{l - 1} i=l⨁rai=sr−sl−1 那么问题就转化成了原创 2022-05-19 23:12:35 · 157 阅读 · 0 评论 -
NOIP Practice Recordings DS
我的 NOIP DS 刷题记录原创 2022-04-02 20:50:32 · 408 阅读 · 0 评论 -
三维偏序-陌上花开
三维偏序-陌上花开 原题传送门:洛谷P3810 三维偏序(陌上花开)题目大意 这是很经典的一道题了,并且可以用很多算法来解决。 有 nnn 个元素每个元素 xix_ixi 有 ai,bi,cia_i, b_i, c_iai,bi,ci 三个属性。设 f(i)f(i)f(i) 表示满足 (aj≤ai)∧(bj≤bi)∧(cj≤ci)∧(i≠j)(a_j \leq a_i) \land (b_j \leq b_i) \land (c_j \leq c_i) \land (i \neq j)原创 2022-03-25 19:02:36 · 742 阅读 · 0 评论 -
Link-Cut-Tree
linkcuttree原创 2022-03-18 21:55:03 · 701 阅读 · 0 评论 -
莫队算法·
莫队 这真是一种非常神奇的算法啊~~ 首先我们要知道莫队算法的基本作用。这个算法基本上可以在 O(nn)O(n\sqrt{n})O(nn) 的时间内处理一些简单的区间问题。而它处理区间问题的方式是通过我们已经处理过的一些区间来实现的。举个例子:比如我已经知道了在区间 [L1,R1][L_1, R_1][L1,R1] 的答案。那么我们又要知道区间 [L2,R2][L_2, R_2][L2,R2] 的答案,莫队算法会选择每次把一个端点向外扩展(假设这个扩展的复杂度是 O(1)O(1)O(1)原创 2022-02-19 19:12:49 · 308 阅读 · 0 评论 -
Splay
Spaly 众所周知,Splay 是一种平衡二叉查找树(不要告诉我你不知道二叉查找树是什么qwq 不知道什么是二叉查找树的看过来: 关于二叉查找树)。在这篇东西的最后我们也解释了为什么我们需要用到平衡二叉查找树而不是直接查找,这里就不再赘述了,所以现在直接引入正题吧。旋转操作 未来解决普通二叉查找树被卡成层数过深而时间复杂度升高的问题我们需要引入这样一个旋转操作。这个操作的本质就是在不改变这棵树的中序遍历的前提下让这颗树的层数减小。具体来说是这样做的(对于左边的那棵树:RRR 是 yyy 的祖先原创 2022-03-06 15:21:18 · 3346 阅读 · 4 评论 -
树链剖分~~~~
树链剖分两个问题: 首先,我们来看看两个经典的问题:在树上的两个点的最短路径上的所有点的值加上 c。求出树上任意两点的最短距离。 第一个问题,很明显就是一个树上差分的模板题,只需要对于每次修改弄一个差分,查询的时候从下向上做一遍 dfs 求一遍前缀和就行了。而对于第二个问题很显然是 LCA 的模板题,先预处理出 dis 数组表示一个我们选定出的根节点到任意点的距离,然后任意两点之间的距离就是 dis[x] + dis[y] - 2 * dis[LCA(x, y)]。 但是,如果我们把这原创 2021-11-10 20:57:15 · 515 阅读 · 0 评论 -
关于二叉查找树
关于 BST一、定义 我们来看这张图,我们很容易发现,这棵树是从左到右依次递增的,也就是对于所有的节点来说,它的右儿子一定大于它的左儿子。这棵树也就是一颗二叉查找树,顾名思义,这玩意儿就是拿来查找东西的。 想一下,如果我们用其他的算法比如排序来查找一个数列的第 k 大,那我们的最快的期望复杂度也就是 O(nlogn)O(n\log n)O(nlogn),而二叉查找树可以做到 O(logn)O(\log n)O(logn) 查找。而且它不仅能用来查找第 k 大(按排名查值),还能按值查排名,原创 2021-11-03 14:36:07 · 297 阅读 · 0 评论 -
主席树--可持久化线段树
主席树可持久化数据结构 首先,我们先了解一下什么是可持久化数据结构:可持久化数据结构 (Persistent data structure) 总是可以保留每一个历史版本,并且支持操作的不可变特性 (immutable)。可持久化线段树 传送门: luoguP3919:可持久化线段树模板1 luoguP3843:可持久化线段树模板2 为什么要把可持久化线段树叫做主席树呢?那当然是因为它的发明者是 hjt 啦qwq。 发明者黄嘉泰 hjt 的拼音首字母与某位主席的名字一样原创 2021-10-15 17:17:12 · 182 阅读 · 1 评论 -
字典树 Trie
字典树#include<bits/stdc++.h>using namespace std;#define MAXN 100100/* Trie 树维护查找前缀数量 */int n = 0; int m = 0;int tot = 0;char str[MAXN];int trie[MAXN][30] = { 0 };int ed[MAXN] = { 0 };void buildTrie(char str[]){ int p = 0; int len = st原创 2021-10-14 20:51:31 · 136 阅读 · 0 评论 -
简单并查集
并查集#include<bits/stdc++.h>using namespace std;#define MAXN 100100int n = 0; int m = 0;int q = 0;int parent[MAXN] = { 0 };void init(){ for(int i = 1; i <= n; i++){ parent[i] = i; }}int findRoot(int x){ if(x == parent[x]){ retur原创 2021-10-14 20:50:50 · 70 阅读 · 0 评论 -
RMQ--ST表
ST表#include<bits/stdc++.h>using namespace std;#define MAXN 100100int n = 0; int m = 0;int a[MAXN] = { 0 };inline int read(){ int x = 0, f = 1; char ch = getchar(); while (ch < '0' || ch > '9') {if (ch == '-') f = -1; ch = getchar();}原创 2021-10-14 20:50:06 · 101 阅读 · 0 评论 -
树状数组和逆序对
树状数组#include<bits/stdc++.h>using namespace std;#define MAXN 100100int n = 0;int a[MAXN] = { 0 };int c[10 * MAXN] = { 0 };inline int lowbit(int x){ return x & -x;}void add(int index, int val){ for(; index <= n; index += lowbit(in原创 2021-10-14 20:49:11 · 138 阅读 · 0 评论 -
线段树代码
线段树#include<bits/stdc++.h>using namespace std;typedef long long ll;#define MAXN 100100int n = 0; int m = 0;int a[MAXN] = { 0 };struct SegTree{ int l, r; ll dat; int lazy;}t[4 * MAXN];int ls(int p){ return p << 1;}int rs(int p)原创 2021-10-13 15:21:12 · 122 阅读 · 0 评论