可持久化数据结构
ToRe.
这个作者很懒,什么都没留下…
展开
-
洛谷 P3919 可持久化数组
题目链接 题意 给数组加个时间版本,维护数组的每个版本的值 思路 用可持久化线段树维护数组即可。 代码 #include <bits/stdc++.h> using namespace std; #define ll long long int root[1000005], tot = 0; struct Node { int l, r, num; }t[(1000005&...原创 2019-04-28 21:08:39 · 116 阅读 · 0 评论 -
BZOJ 3261最大异或和(可持久化trie树)
题目链接 思路 设 s[i]s[i]s[i] 为 aaa 序列的前 iii 个值得异或和 异或和,满足前缀和求区间异或值的性质。 那么每次查询 l,r,xl,r,xl,r,x ,答案即 ∑i=lrmin(S[n]⊕x⊕s[i−1])\sum_{i=l}^{r}min(S[n]\oplus x \oplus s[i-1])∑i=lrmin(S[n]⊕x⊕s[i−1]) s[n]s[n]s[n]可用...原创 2019-04-22 20:51:35 · 148 阅读 · 0 评论 -
POJ 2104 K-th Number(主席树)
题目链接 题意 给定数组、无修改、多查询,求区间第k大。 思路 主席树板子题 先离散化,在对每个节点建线段树,线段树存储下标位置+1的前缀和。 每次查询,查询俩节点之间线段树的差值第k大。 感觉代码思路理解不是很难,和树上每个节点建树差别不大?,但是用好写题不容易,太菜了。 代码 #include <stdio.h> #include <vector> #include &...原创 2019-04-19 11:59:12 · 93 阅读 · 0 评论 -
洛谷 P3402 【模板】可持久化并查集
题目链接 思路 用可持久化数组维护历史版本的 fa 父亲数组和 dep 树深度数组,以树深按秩合并。 代码 #include <stdio.h> const int maxn = 2e5+5; int n, m; struct Node { int l, r, val; }h[maxn*80]; int cnt, rootfa[maxn], rootdep[maxn], t...原创 2019-07-17 16:35:09 · 84 阅读 · 0 评论 -
HDU 6621 K-th Closest Distance(主席树+二分)
题目链接 题意 n个整数的数列,多组询问,求区间减去一个值后绝对值的第k小。 思路 区间第K小主席树就行,这题要求减去一个值后绝对值第k小原先想着二分找到最接近0的左右k个元素,但是这样复杂度多了一个K有点大。 可以二分答案,如果p-mid,p+mid区间内元素等于k个说明mid是答案,区间元素个数大于等于k作为判断条件具有单调性,可以据此二分,这样就优化掉了一个k。 代码 #include<...原创 2019-08-01 10:05:31 · 241 阅读 · 2 评论 -
Codeforces 547E Mike and Friends(AC自动机+主席树)
题目链接 题意 给你 nnn 个模式串,qqq 次查询,每次查询 l,r,kl,r,kl,r,k,问第 kkk 个字符串在第 [l,r][l,r][l,r] 区间的模式串中出现多少次。 思路 首先思考一个模式串 sss 对全部串的贡献如何求? 对 sss 的所有前缀跳 fail 链,对所有经过的模式串终点都有1点贡献,因为当前节点属于 sss 串前缀而经过的模式串终点则是 sss 串后缀。 所以可...原创 2019-09-13 11:09:42 · 142 阅读 · 0 评论