SP23776 题意: 给出一个长度为 \(n\) 的序列,\(q\) 个询问,询问 \([i,j]\) 区间大于 \(k\) 的数的个数,强制在线 做法: 其实就是这题的强制在线版 很裸的一道主席树,甚至可以说是模板题,直接上主席树的板子即可 查询时如果$k>mid$,说明左儿子中的数都比$k$要 ...
分类:
其他好文 时间:
2020-12-09 11:49:34
阅读次数:
4
###P3899 [湖南集训]谈笑风生 二维数点问题,主席树模板(两种写法 #include<bits/stdc++.h> #define IL inline #define LL long long #define pb push_back using namespace std; const i ...
分类:
其他好文 时间:
2020-11-21 12:15:18
阅读次数:
7
根据题意,寻找子串出现的第k次的开头。寻找第k大,一般可以想到用主席树来维护。 但是这题还需要更多的转化,首先想到我们如果想知道子串匹配,一个可以考虑kmp,但是因为询问过多,不太科学。 一般还有两种,一种是哈希算法,一种是后缀数组求lcp。考虑哈希算法,感觉可做性不是很大,因为他要多次匹配。考虑后 ...
分类:
编程语言 时间:
2020-09-18 02:17:50
阅读次数:
44
可持久化线段树(主席树) 单点修改 ? 1.单点修改时,我们考虑将包含该点$k$的线段树节点新建出一条链。(就像这样) 每次修改将创造出$logn$个新节点。 ? ? 2.修改完的线段树不再是一颗完全二叉树,我们不能直接用层次编号,而是直接改为记录左右子节点的编号。大概的意思就是:不能用$o << ...
分类:
其他好文 时间:
2020-07-30 21:49:21
阅读次数:
69
1.可持久化线段树 又称主席树,因为发明这一算法的人的名字缩写为HJT。 主席树可以储存各个历史状态,如果用普通线段树,每个状态都是 4n 的,内存和时间开销极大,而主席树通过动态开点,先继承上一状态的左右儿子节点指针,再进行修改,每次修改的时间和空间都可以优化到 \(\log n\) 级别。 通过 ...
分类:
其他好文 时间:
2020-07-28 22:48:06
阅读次数:
88
题目链接: 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
P3919 【模板】可持久化线段树 1(可持久化数组) AC_Code: 1 #include <bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 const int maxn=1e6+10; 5 const int mo ...
分类:
其他好文 时间:
2020-07-22 20:49:10
阅读次数:
77
离散化 蒟蒻因为即将学习主席树,发现离散化这个东东不太会,所以写一篇博客记录一下。 概念 离散化,就是把无限空间中有限的个体映射到有限的空间中去,以提高算法的时空效率。(来自百度百科) 作用 ? 很多算法的复杂度与数据中的最大值有关,比如树状数组和纯用数组实现的一对一标记。时常会遇到这种情况:数据的 ...
分类:
其他好文 时间:
2020-07-19 17:58:05
阅读次数:
58
主席树(可持久化线段树) 前置芝士 知识点 线段树,权值线段树(不一样),离散化,前缀和(思想) 由来 据说,是一位叫fotile主席的大大在写一道题时因为不会划分树就临时yy出一个算法,于是,这算法就这么诞生了。 作用 对区间求 \(kth\) 思想 思考优化策略 一列数,可以对于每个点i都建一棵 ...
分类:
其他好文 时间:
2020-07-19 17:57:51
阅读次数:
52
题目描述(口糊) 先给定一个长度为n的数列,然后给m次操作,每次输入b,求第b小的数。 样例输入 5 7 4 10 9 23 5 1 2 3 4 5 样例输出 4 7 9 10 23 数据范围及温馨提示 1e9 大家一定要用线段树做这道题啊! 建议大家在认真阅读一下逆序对的题解 题解传送门 于是这里 ...
分类:
其他好文 时间:
2020-07-17 13:36:55
阅读次数:
49