![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
高阶数据结构
木落淮南,雨晴雲夢
这个作者很懒,什么都没留下…
展开
-
可撤销并查集模板
CF891C Envy#include <bits/stdc++.h>#include <ext/pb_ds/assoc_container.hpp>#define inf 0x7fffffff#define ll long long//#define int long long//#define double long double#define re int#define void inline void#define eps 1e-5//#define mo原创 2022-04-13 20:45:58 · 257 阅读 · 0 评论 -
CF940F Machine Learning(带修莫队模板)
CF940F Machine Learning纯模板题有几个需要注意的地方1.维度是all+1维,其中查询一维,修改一维,共二维,所以块的大小size=n2/3size=n^{2/3}size=n2/32.修改处每次修改一次(哪怕没在块内,也要swap)3.离散化4.bitset快速查询#include <bits/stdc++.h>#define inf 0x7fffffff#define ll long long//#define int long long//#def原创 2022-02-21 20:49:27 · 203 阅读 · 0 评论 -
dance link(DLX) 模板
P4929 【模板】舞蹈链(DLX)模板使用#include <bits/stdc++.h>#define inf 0x7fffffff#define ll long long//#define int long long//#define double long double#define re register int#define void inline void#define eps 1e-18//#define mod 1e9+7#define ls(p) p&l转载 2021-11-24 21:26:27 · 146 阅读 · 0 评论 -
回滚莫队模板
P5906 【模板】回滚莫队&不删除莫队带删的莫队#include <bits/stdc++.h>#define inf 0x7fffffff#define ll long long//#define int long long//#define double long double#define re register int#define void inline void#define eps 1e-18//#define mod 1e9+7#define ls原创 2021-11-19 19:23:48 · 134 阅读 · 0 评论 -
F. Strange Memory (启发式合并)
F. Strange Memory与子树相关,且是不同的子树显然是启发式合并。原创 2021-10-19 20:32:25 · 173 阅读 · 0 评论 -
异或最小生成树的板子
CF888G Xor-MST题目大意是:每两个点之间的边权是两个点的异或值,求最小生成树版子题,用01trie做#pragma GCC optimize(2)#pragma GCC optimize(3,"Ofast","inline")#include <bits/stdc++.h>#define inf 0x7fffffff#define ll long long//#define int long long//#define double long double#de原创 2021-10-05 23:03:04 · 75 阅读 · 0 评论 -
P1903 [国家集训队]数颜色 / 维护队列(带修莫队)
P1903 [国家集训队]数颜色 / 维护队列板子题带修莫队的的和普通莫队的区别就在于增加了修改操作在一操作,求完之后在看修改的,把修改的部分加上去,加到该次操作之前另外这里的块大小应该设为n23n^{\frac{2}{3}}n32才能过,一般的根号过不了#include <bits/stdc++.h>#define inf 0x7fffffff#define ll long long//#define int long long//#define double long d原创 2021-10-02 12:32:46 · 81 阅读 · 0 评论 -
Codeforces Round #745 (Div. 2) E Train Maintenance(分块)
Train Maintenance题意:每辆火车都有一个工作时间xix_ixi,维修时间yiy_iyi,每次操作代表一天,有加入火车和删除火车的操作,保证每天每种火车最多只有一量,保证数据合法,求每天的维修火车的数量。考虑分块,块大小设为sizsizsiz,(工作时间+维修时间)大于等于的块大小的直接用差分数组处理,(需要注意的是,删除的时候,不能删前面的要删大于等于(加上维修时间)该天的火车),小于该块的利用一个二维数组,分别代表模数,和取模意义下的天数#pragma GCC optimize原创 2021-10-01 11:36:22 · 166 阅读 · 0 评论 -
K短路(可持久化左偏树求法)
Remmarguts’ DateA的做法不大稳定,因此采取可持久化左偏树的做法来优化A时间复杂度O(nlogn+mlogm+klogk)O(nlogn+mlogm+klogk)O(nlogn+mlogm+klogk)#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<queue>#define re register int#原创 2021-09-03 17:13:38 · 161 阅读 · 0 评论 -
笛卡尔树模板
P5854 【模板】笛卡尔树感觉和treap很像,后来查了查资料,treap是特殊的笛卡尔树但是这里的模板只需要维护一个单调栈即可详细可以参考这篇文章链接#include <bits/stdc++.h>#define inf 0x7fffffff#define ll long long#define int long long//#define double long double#define re register int#define void inline void原创 2021-08-07 17:39:16 · 75 阅读 · 0 评论 -
动态树LCT模板
P3690 【模板】动态树(Link Cut Tree)基本上就是模板题,没有什么好解释的初始时是nnn棵树,如果要动态连边的话linklinklink即可#include <bits/stdc++.h>#define inf 0x7fffffff#define ll long long//#define int long long//#define double long double#define re register int#define void inline voi原创 2021-08-03 10:49:38 · 113 阅读 · 0 评论 -
可持久化平衡树(fhq Treap)
P3835 【模板】可持久化平衡树其实和一般的fhq Treap差别不是很大,只有在分裂,合并的时候加入可持久化的操作具体操作如下void split(int p,int val,int &x,int &y){ if(!p) x=y=0; else { if(e[p].val<=val) { x=++tot; e[x]=e[p]; split(e[x].r,val,e[x].r,y); update(x); } else {原创 2021-08-02 20:17:04 · 455 阅读 · 0 评论 -
动态第k大(树状数组套主席树)
P2617 Dynamic Rankings这道题要求单点修改+区间查询第k大因此可以用树状数组维护权值,主席树维护位置其中主席树的第i个根代表的是[i−lowbit(i)+1,i][i-lowbit(i)+1,i][i−lowbit(i)+1,i]的信息查询的时候则是查询[l−1,r][l-1,r][l−1,r]的区间,利用前缀和的思想进行查询,右减左另外,需要注意的是,主席树的建树,因为一个根代表一个区间,而不是一个点,因此,不需要依赖前面的点,直接在这棵树上修改即可,即每一个树状数组都对应一原创 2021-07-30 17:28:55 · 172 阅读 · 0 评论 -
树套树(下标线段树+权值平衡树)
P3380 【模板】二逼平衡树(树套树)一天写一题,一题写一天看了看题解,这道题的做法太太太多了有整体二分,cdq,分块,树套树还有乱搞?整体二分,cdq我不会,就不谈了先说分块:时间复杂度n1.5log2,容易被卡(虽然这道题没有被卡)树套树(下标线段树+权值平衡树):时间复杂度:nlog3树套树(权值线段树+下标平衡树):时间复杂度:nlog2因为是第一次写树套树的题目,用了非常久的时间所谓树套树(就该题而言),就是在每一个线段树的节点中建一颗平衡树...原创 2021-07-28 23:29:37 · 156 阅读 · 0 评论 -
左偏树模板
P3377 【模板】左偏树(可并堆感谢AgOH大佬的视屏讲解。这里的可并堆可以用并查集维护,按右子树合并(感觉按左子树也行),然后因为右子树的叶子节点深度较小所以节点深度等于右子树深度+1(这就是左偏)并查集之所以可以用路径压缩,是因为,对的形态用并查集维护的树的形态是无关的,可以改变树的形态#include <bits/stdc++.h>#define inf 0x7fffffff//#define ll long long#define int long long//#def原创 2021-07-25 12:11:15 · 85 阅读 · 0 评论 -
KD树模板1
In case of failure题目大意:在二维空间给你n个点,求每个点最近的点,求出距离平方#include <bits/stdc++.h>//#define inf 0x7fffffff//#define ll long long#define int long long//#define double long double#define re register int#define void inline void#define eps 1e-8//#defi原创 2021-07-17 09:57:27 · 124 阅读 · 0 评论 -
AVL树模板
P3369 【模板】普通平衡树怎么说呢。。。。发现平时做平衡树的题解很少有用AVL树写的,所以补了一个AVL树的模板。虽然说平时AVL树用的比较少,但感觉效率还是挺高的,直接当成模板使用#include <bits/stdc++.h>//#define inf 0x7fffffff//#define ll long long//#define int long long//#define double long double#define re register int#de转载 2021-07-16 11:57:01 · 210 阅读 · 0 评论 -
splay模板
P3369 【模板】普通平衡树这道题,大概做了n遍了。。。。。这次是spaly,这道题采取的是递归的写法在getrank,getnum处与之前的有些许不同,需要注意据说splay还可以简化,有时间研究一下#pragma GCC optimize(2)#pragma GCC optimize(3,"Ofast","inline")#include <bits/stdc++.h>#define inf 0x7fffffff//#define ll long long#define原创 2021-07-12 16:23:55 · 101 阅读 · 0 评论 -
fhq Treap1(区间反转)
P3391 【模板】文艺平衡树需要用一个懒标记反转区间,另外两次反转等于没转输出时需要中序遍历输出#include <bits/stdc++.h>#define inf 0x7fffffff#define ll long long#define int long long//#define double long double//#define double long long#define re int//#define void inline void#define e原创 2021-07-10 23:06:48 · 112 阅读 · 0 评论 -
fhq Treap 模板1(普通平衡树)
P3369 【模板】普通平衡树各个操作都有相似之处,且代码较短,因此比较好写比较玄学的就是59排的随机化,各种写法,这里用的额是原版的写法#include <bits/stdc++.h>#define inf 0x7fffffff#define ll long long#define int long long//#define double long double//#define double long long#define re int//#define void i原创 2021-07-10 17:28:07 · 84 阅读 · 0 评论 -
替罪羊树模板
P3369 【模板】普通平衡树注意!!!!!!!!!!!!!!由于题目限制:该模板没有考虑,删除节点不存在的情况。#include <bits/stdc++.h>#define inf 0x7fffffff#define ll long long//#define int long long//#define double long double//#define double long long#define re register int//#define void in原创 2021-07-09 15:30:23 · 56 阅读 · 0 评论