最近做题发现自己并不知道什么时候该用树套树,就来总结一下 一、静态整体kth 排序输出 sort(a+1,a+n+1); printf("%d\n",a[k]); 时间复杂度O(nlogn) 空间复杂度O(n) 二、动态整体kth 权值线段树+二分 查询时先查询左子树和sum,比较k和sum的大小: ...
分类:
其他好文 时间:
2021-06-13 10:21:17
阅读次数:
0
区间第K小查询 description 给定一个长度为$n$ 的序列,每次对于一个区间$[l,r]$ ,求出这段区间中第$k$ 小的数的值。 \(n\le 10^5\) solution 首先考虑全局怎么做,即询问区间为$[1,n]$ 时。 我们可以建立权值线段树,对于其上的区间$[l,r]$ 记下 ...
分类:
其他好文 时间:
2021-06-06 19:07:20
阅读次数:
0
[可持久化权值线段树] [模板] [数组版本] \[ 1 \leq n \leq 2e5\\ |a_i| \leq 1e9 \] 感觉动态开点用指针好理解一点 但是太难调试了,还是数组版本吧 代码 int a[maxn],b[maxn],len; inline int getid(int val){ ...
分类:
编程语言 时间:
2021-03-06 14:57:43
阅读次数:
0
[可持久化权值线段树] [模板] [指针版本] \[ 1 \leq n \leq 2e5\\ |a_i| \leq 1e9 \] 感觉动态开点用指针好理解一点 代码 #include<bits/stdc++.h> #define eps 1e-8 #define equals(a,b) (fabs( ...
分类:
其他好文 时间:
2021-03-06 14:43:50
阅读次数:
0
【模板】权值线段树套序列线段树 P3380 【模板】二逼平衡树(树套树) 主要思路如下: 外层为权值线段树,内层为动态开点线段树,也就是每个权值线段树上的节点开一个动态开点线段树。 外层的权值线段树支持查询排名,内层的线段树限制了区间。实际上就是在普通权值线段树上查询的价值变成了在其线段树上区间查询 ...
分类:
其他好文 时间:
2020-10-31 01:52:32
阅读次数:
16
51Nod-1494 选举拉票 权值线段树 题意 现要竞选市长。有$n$个选民投票。 每行两个数字$a_i,b_i$表示第$i$个选民投给$a_i$号候选人,必须花费$b_i$使他投你的票。 你是第0号候选人。 问最少花多少钱使你竞选成功。 \[ 1\leq n \leq 10^5\\ 0\leq ...
分类:
其他好文 时间:
2020-10-06 21:07:49
阅读次数:
28
题目链接 Solution 对每个节点维护一个权值线段树,线段树上就维护最大值以及最大值出现的节点。利用树上查分的思想,在 \(x\),\(y\) 位置 \(+1\),在 \(LCA(x, y)\) 位置 \(-1\),\(fa_{LCA(x, y)}\) 位置 \(-1\)。 更新完后不断把线段树 ...
分类:
其他好文 时间:
2020-10-06 20:09:52
阅读次数:
28
一般线段树与权值线段树 1.算法分析 一般还要开4N的数组 一般做单点修改、区间查询,加上懒标记后,可以做区间修改、区间查询 1.1 一般线段树 可以处理:区间加、区间乘、区间max/min、区间覆盖等问题 1.2 权值线段树 维护全局的值域信息,每个节点记录的是该值域的值出现的总次数。 使用二分的 ...
分类:
其他好文 时间:
2020-08-03 23:09:16
阅读次数:
69
题目链接: P2633 Count on a tree solution: LCA好题.询问第k大,不难想到主席树和前缀和思想,对于每个点$x$,我们可以用主席树维护root到$x$上的序列,然后查询$x,y$路径上的第$k$小只需要用前缀和维护权值线段树,用$x+y-lca(x,y)-f[lca( ...
分类:
其他好文 时间:
2020-07-26 15:45:20
阅读次数:
73
【原题】 Note that the memory limit is unusual. You are given a multiset consisting of nn integers. You have to process queries of two types: add integer ...
分类:
其他好文 时间:
2020-07-21 21:33:29
阅读次数:
83