POJ 2104 这题说的是给了一个区间求区间的第K大的数, 这点利用 函数式线段树的前缀式线段是的 长处 解决, 我们将 每个数字离散一下, 然后线段树存的是他的孩子个数,然后利用函数式线段树的前缀思想 两个前缀相减便得到了我们想要的 区间中的点的个数#include #include #incl...
原创
2021-07-28 13:49:57
64阅读
例题:POJ-2104 求区间第k大 sum代表当前数是第几大 对每个数建一棵树 当前树的sum 继承自上一颗树的sum 从祖先到当前数的位置 sum++ 如果前面的数中没有比当前数大的数 sum++后为1 即为第一大的数 而其它小的数的sum在从祖先到当前数的位置寻找时顺便sum++更新
转载
2018-09-19 07:26:00
119阅读
2评论
转载自https://www.cnblogs.com/zyf0163/p/4749042.html1.建树首先需要建立一棵空的线段树,也是最原始的主
转载
2022-07-05 11:13:54
50阅读
原谅博主太蒟。。。实在讲不明白 http://www.cnblogs.com/zyf0163/p/4749042.html(讲得很好O(∩_∩)O~)在粘模板之前,先进行一下简单的解释: 我们先 sort(a+1,a+1+n,cmp); 这是为什么呢~ 其实,我...
转载
2017-05-31 07:34:00
70阅读
2评论
回顾了一下主席树的板子 include include define ls t[id].ch[0] define rs t[id].ch[1] define ols t[las].ch[0] define ors t[las].ch[1] define mid (l+r 1) const int N
转载
2018-06-17 17:50:00
101阅读
2评论
推荐一些别人写得比较好的主席树解析(其实是自己能力有限,写得不如人家好): 静态主席树 动态主席树
转载
2018-05-04 23:45:00
90阅读
2评论
传说中的“高级”数据结构? 第一篇博客写一道模板题就行了。 主席树和普通的线段树写法上有什么区别? 左右孩子的表示方法 其实这和动态开点的线段树一个性质。我的写法就是把 \(change\) 函数改为 \(int\) 类型,实时返回孩子的编号。 公用信息 主席树的基本思想就是公用信息,能用之前的信息 ...
转载
2021-08-05 21:35:00
173阅读
2评论
神秘数 一道算是十分巧妙的题目。 与其它许多题目一样,一开始并不会想到用什么主席树,那些都只是后来用来做优化的东西。让我们来思考一下,假如给一个数列,然后只有一次询问的话应该怎么办?排一下序,然后从小到大扫描。从小往大扫描的过程中,如果当前可以表示的范围是 \([1,able]\) ,当前这个可利用 ...
转载
2021-08-18 21:23:00
152阅读
2评论
主席树 引入: 一个问题:给定 \(n\) 个数,一共 \(m\) 次询问,每次都要询问 \([l,r]\) 的第 \(k\) 大的数,其中 \(n,m,l,r\) 均不超过 \(2 \times 10^5\)。 解决: 暴力想法: 显而易见,最暴力的方法就是区间 \(sort\) 之后输出第 \( ...
转载
2021-10-18 19:46:00
483阅读
2评论
主席树主要解决的问题就是区间第K小数的问题。主席树为什么叫主席树呢
原创
2023-02-04 10:50:44
47阅读
囧,现在才学。而且发现,主席树和以前写过的线段树维护名次是差不多的,,,只是用多颗线段树维护区间信息,然后可以像前缀和一样的加减。恩,慢慢来写这篇博文。(各种定义以及背景我都掠过了)我先说主席树的构成吧(省略大堆专业术语,我只写通俗易懂的)我们假设现在要维护的数组是a[]一颗主席树T[i]其实就是一...
原创
2021-08-11 14:58:13
164阅读
这只是一个模板...具体算法qsc已经讲的很清楚了(QAQ) 模板链接 代码 #include<iostream>#include<cstdio>#include<cstring>#include<string>#include<algorithm>#include<cctype>#include<
转载
2018-05-18 15:12:00
70阅读
2评论
基本概念 主席树是一种 可持久化线段树,利用函数式编程思想使线段树 支持查询历史版本。同时,主席树通过线段树修改的性质,使得程序效率提升,时空复杂度降低。 主席树实际上是从最暴力的可持久化算法优化得来,其单次修改时间复杂度约为 \(O(logn)\),空间复杂度大约为 \(O(mlogn+4n)\) ...
转载
2021-07-24 23:29:00
154阅读
Preface为什么叫主席树呢?因为这是我们的fotile96主席(Orz……)比赛的时候不会打划分树,用来代替的一种东西,现在已经被众多OIer采用,把划分树扔进了博物馆~Text啊?主席树是什么,好高大上啊!主席树和可持久化线段树从某些角度来讲是类似的。但从目的来讲是不一样的。主席树的核心思想就是,每个前缀维护一棵线段树。 然而这样时空复杂度会达到N2log2NN^2log_2N还不如暴力呢。
原创
2016-07-14 10:43:55
56阅读
#include<bits/stdc++.h>using namespace std;const int N=1e5+10;int n,m,sum[20*N],ls[20*N],rs[20*N],rt[N],a[N],b[N],sz,k,cnt;void up(int pre,int &o,int l,int r,int pos){ o=++cnt; ls[o]...
原创
2022-03-14 09:58:26
74阅读
题目描述给定N个正整数构成的序列,将对于指定的闭区间查询其区间内的第K小值输入样例#1: 5 525
原创
2022-07-05 11:13:42
30阅读
刷了那么多线段树的题终于可以搞一下可持久化线段树了。 首先是 放一道最最最简单的例题: 对于这个需要访问历史的线段树来说 我想应该是一棵可持久化线段树的东西。 对于一棵 线段树我们想让其可持久化 那么应该是 让其点接着以前的点接(如果没有修改的话) 我想修改的话就必须搞一波树套树了(尽管我不会但是
转载
2019-02-23 13:58:00
123阅读
2评论
贴一下#include<iostream>#include<algorithm>#define int long longusing namespace
原创
2023-05-26 14:47:43
26阅读