![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
Daniel__d
这个作者很懒,什么都没留下…
展开
-
LOJ6109-可持久化无旋Treap
LOJ6109题目描述题解代码#include<bits/stdc++.h>#define LL long long#define M 30000009using namespace std;int read(){ int f=1,re=0; char ch; for(ch=getchar();!isdigit(ch)&&ch!='-';ch=g...原创 2020-07-27 21:18:18 · 151 阅读 · 0 评论 -
P2617-树状数组套主席树
P2617题目描述题解代码#include<bits/stdc++.h>#define M 200010using namespace std;int read(){ int f=1,re=0;char ch; for(ch=getchar();!isdigit(ch)&&ch!='-';ch=getchar()); if(ch=='-'){f=-...原创 2020-03-29 09:32:04 · 172 阅读 · 0 评论 -
P4556-线段树合并,差分
P4556题目描述题解代码#include<bits/stdc++.h>#define M 1000009using namespace std;int read(){ int f=1,re=0;char ch; for(ch=getchar();!isdigit(ch)&&ch!='-';ch=getchar()); if(ch=='-'){f=...原创 2020-03-29 09:35:42 · 116 阅读 · 0 评论 -
P5494-线段树合并与分裂/无旋Treap
P5494题目描述题解代码 无旋Treap#include<bits/stdc++.h>#define int long long#define M 700009using namespace std;int read(){ int f=1,re=0;char ch; for(ch=getchar();!isdigit(ch)&&ch!='-';c...原创 2020-03-29 10:10:43 · 357 阅读 · 0 评论 -
线段树维护单调子序列
线段树维护单调子序列解析T1 P4198题目描述题解代码#include<bits/stdc++.h>#define M 100009using namespace std;int read(){ int f=1,re=0;char ch; for(ch=getchar();!isdigit(ch)&&ch!='-';ch=getchar());...原创 2020-03-29 10:38:30 · 151 阅读 · 0 评论 -
李超线段树
李超线段树学习资料例题T1 P4254题解代码#include<bits/stdc++.h>#define M 4000009using namespace std;char s[10];int n,tag[M],tot;struct l{double k,b;}line[M];double getsum(int x,int id){return line[id...原创 2020-03-29 10:22:57 · 112 阅读 · 0 评论 -
势能线段树
势能线段树解析区间开方例题P4145题目描述题解代码#include<bits/stdc++.h>#define M 200009#define int long long using namespace std;int read(){ int f=1,re=0;char ch; for(ch=getchar();!isdigit(ch)&&...原创 2020-03-29 09:50:43 · 2914 阅读 · 0 评论 -
P4219大融合-LCT维护子树信息
P4219-LCT维护子树信息题目大意给定 nnn个结点和 qqq 次操作,每个操作为如下形式:AxyA x yAxy 在结点 xxx和yyy之间连接一条边。QxyQ x yQxy 给定一条已经存在的边 (x,y)(x,y)(x,y),求有多少条简单路径,其中包含边 (x,y)(x,y)(x,y) 。保证在任意时刻,图的形态都是一棵森林。题解该题简单来说,也就是LCT维护子树信息因...原创 2020-03-29 10:25:48 · 146 阅读 · 0 评论 -
LCT-动态树
LCT-动态树学习资料https://www.cnblogs.com/flashhu/p/8324551.html(具体的操作解析参见该dalao的博客,已经非常详尽)例题T1 洞穴勘测题解LCT板题,与基本操作没有差别对于拆边,直接cutcutcut对于连边,直接linklinklink对于询问,直接通过findrootfindrootfindroot判断连通性代码#in...原创 2020-03-29 10:55:36 · 141 阅读 · 0 评论 -
无旋Treap的可持久化
无旋Treap的可持久化解析其实FHQTreapFHQ TreapFHQTreap的可持久化非常好理解,只需要的每次操作的rtrtrt用数组记录下来,然后操作时,节点新建即可模板题 P3835注意操作细节注意数组大小注意rand()rand()rand()的值域代码#include<bits/stdc++.h>#define int long long#define...原创 2020-03-29 10:39:20 · 136 阅读 · 0 评论 -
无旋Treap--FHQ Treap
无旋Treap解析FHQTreapFHQ TreapFHQTreap和普通的TreapTreapTreap都是一个二叉搜索堆,其同时满足二叉树的性质(左子树的权值小于等于当前节点权值,右子树权值大于当前节点权值)和堆的性质(对于小根堆,当前节点的优先级是堆中最小的)。优点:1,代码实现简单2,可以实现可持久化核心操作(以下均为小根堆)初始化我常用数组写法int val[M],po...原创 2020-03-29 10:40:59 · 129 阅读 · 0 评论 -
World of Darkraft: Battle for Azathoth-线段树,离散化
CF1320C World of Darkraft: Battle for Azathoth题目描述题解首先对xxx值进行排序(包括怪兽的),于是xxx值的限制关系较为容易满足了,只需要维护两个指针,扫一遍即可,但我们需要考虑对于当前xxx值,如何选取到最优的yyy值。我们考虑用线段树维护,对于线段树y值(离散化过后)的位置减去他的价值(单点修改),然后每次双指针扫到怪兽iii的时候,给...原创 2020-03-29 10:54:50 · 121 阅读 · 0 评论 -
旅行-树剖,动态开点线段树
P3313 旅行-树剖,动态开点线段树题目描述题解对每一种教派开一颗线段树,但是很明显空间会爆,所以动态开点线段树,所以空间复杂度降低到nlognnlognnlogn,然后树剖套线段树,码量稍大代码实现#include<bits/stdc++.h>#define M 200009using namespace std;int read(){ int f=1,re=0...原创 2020-03-29 10:55:00 · 92 阅读 · 0 评论 -
美味-主席树
美味-主席树题目描述题解代码#include<bits/stdc++.h>//主席树 #define M 600009using namespace std;int read(){ int f=1,re=0; char ch; for(ch=getchar();!isdigit(ch)&&ch!='-';ch=getchar()); if(ch...原创 2020-03-29 10:51:36 · 71 阅读 · 0 评论 -
等差子序列-哈希+权值线段树
等差子序列-哈希+权值线段树题目描述题解首先我们肯定只需要找len=3len=3len=3的情况由于是1−N1-N1−N的序列,因此我们考虑对一个数xxx维护[x−len,x−1],[x+1,x+len][x-len,x-1],[x+1,x+len][x−len,x−1],[x+1,x+len]的010101串,(000表示在xxx之前没出现,111表示在xxx之前出现了,len=min...原创 2020-03-29 10:51:27 · 119 阅读 · 0 评论 -
HDU3973-字符串哈希+线段树
HDU3973-字符串哈希+线段树题目描述即给你一个母串,和nnn个字符串,mmm次操作,每次操作有两种:1,询问母串中l到r位置的字串是否在nnn个字符串中出现过;2,修改母串中xxx位置的字母题解字符串哈希套线段树裸题(注意查询操作,对于类似的区间合并,常用该种查询方式)还有一个坑,代码中有说代码实现#include <stdio.h>//字符串哈希套线段树-AC#...原创 2020-03-29 10:52:31 · 225 阅读 · 0 评论 -
弹飞绵羊-LCT
弹飞绵羊-LCT题目描述题解新建一个点n+1n+1n+1,如果从该点被弹飞就连边到n+1n+1n+1,其他操作都为LCT基本操作询问时,只需makeroot(j),access(n+1),splay(n+1)makeroot(j),access(n+1),splay(n+1)makeroot(j),access(n+1),splay(n+1),答案即为size[n+1]−1size[n+...原创 2020-03-29 10:47:44 · 135 阅读 · 0 评论 -
最大异或和-可持久化Trie
最大异或和-可持久化Trie题目描述题解首先观察式子,根据异或的可加减性,可将其转化为式子s[p−1]s[p-1]s[p−1] ^ s[N]s[N]s[N] ^ xxx(s[x]s[x]s[x]表示前缀异或和),于是可持久化Trie,每次查询区间[l−1,r−1][l-1,r-1][l−1,r−1]代码(一直90分,wa一个点,不想调了)#include<bits/stdc++...原创 2020-03-29 10:48:20 · 87 阅读 · 0 评论 -
191113-Lost cows
191113-Lost cows题目描述传送门解析完整题意翻译:已知第i头牛前面有aia_iai头牛比它低,求每头牛的身高(已知每头牛的身高为1~n且互不相同)n<=1e5n<=1e5n<=1e5解析:首先我们倒着来考虑整个奶牛序列,如果第n头牛前面有ana_nan头牛比它低,那么它的身高必为an+1a_n+1an+1,再来考虑第n-1头牛1,如果an−1<...原创 2020-03-29 10:44:33 · 139 阅读 · 0 评论 -
191113-扩展域并查集
191113-扩展域并查集T1 食物链解析因为有三种关系,同类,吃,被吃,所以我们将每个点拆成三个点:x,xeat,xenemyx,xeat,xenemyx,xeat,xenemy,分别表示x的同类,x的猎物,x的天敌,于是每次对于询问1,就判断xeat与y是否同族,x与yeat是否同族,如果皆不同,那么为真话,否则为假,如果为真,就将x,y合并,xeat,yeat合并,xenemy,yen...原创 2020-03-29 10:44:48 · 183 阅读 · 0 评论 -
191104-扫描线
191104-扫描线原创 2020-03-29 10:45:47 · 185 阅读 · 0 评论 -
191104-线段树练习
191104-线段树练习原创 2020-03-29 10:46:48 · 83 阅读 · 0 评论 -
191025-主席树
191025-主席树定义在讲主席树之前,先讲讲权值线段树:何为权值线段树呢?接下来再讲主席树:**主席树的本质就是一棵棵权值线段树,或者说是一个权值线段树的前缀和。**或许有点难理解,来看下面一个问题。问题引入(传送门)求解1,首先面对求第k小数,我们就可以考虑二分答案,详解如下;2,一种方法是每次将询问区间排序,然后二分求解,但由于有多次询问,时间复杂度必爆。因此我们考虑...原创 2019-10-31 19:59:55 · 102 阅读 · 0 评论