可持久化数据结构
cy41
celery cabbage
展开
-
2019杭电多校第四场 H - K-th Closest Distance(二分加主席树)
题目链接:HDU - 6621 题意:给定n个数字,q次询问,每次给出l,r,p,k。询问区间l,r内所有数字与p的差值的绝对值中排名第k大的是多少。 看到题目给了15秒的时限,再看看题目数据很容易想到单次查询应该是log*log的复杂度,再观察这个答案发现具有单调性,于是想到要二分答案,答案确定后,就可以知道查询区间了,我们只需要查询区间[p-mid,p+mid]内有多少数字即可。 关于单...原创 2019-08-03 08:44:14 · 278 阅读 · 0 评论 -
1295 XOR key (可持久化trie)
题目链接:1295 XOR key 模板 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int maxn=50009; int tot; int Son[maxn*30][2]; int sum[maxn*60]; void insert(int p,int q,int x){ ...原创 2019-11-10 09:47:13 · 181 阅读 · 0 评论 -
可持久化并查集加强版
题意:中文 题目链接:AcWing270. 可持久化并查集加强版 前置知识:可持久化数组,主席树。 每个版本用一个线段树来维护节点的父亲是谁,该联通块的节点数量,线段树只有叶子节点有意义,其余都是无意义的。 最开始的时候,所有节点的父亲都是自己,每个联通块的秩都为1。 按主席树那样用root来表示第k个版本对应的线段树。 对于合并操作,按秩合并,将秩较小的合并到大的上面,相当于两次更新,第一次将x...原创 2019-09-15 10:53:01 · 227 阅读 · 0 评论