主席树
小菜鸡加油
菜鸡
什么都能折磨
展开
-
主席树题集及小结
怕期末月完了就忘完了,蒟蒻总结一波。先来模板题:求静态区间第k小https://www.luogu.com.cn/problem/P3834对于板子的理解:板子的博客#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#include<map>#include<set>#inclu原创 2020-12-03 21:50:47 · 814 阅读 · 0 评论 -
SP3267 DQUERY - D-query (求区间内不同数的个数-在线主席做法)
扫描序列建立可持续化线段树。对每个pos建立主席树。pos对应单点修改的位置,找到+=val;如果未出现,就赋值当前位置去找。不然先在root[i-1]基础上减去上次这个数字的贡献,再加这次这个数字的贡献。同时维护每一个元素上一次出现的位置。query的时候:每一个主席树维护的是1~i(当前位置)的不同数字有多少个。找到时候在root【r】中找,树中区间编号>=l的,就是1-r中,l~r的贡献所求。理解可以结合代码模拟一下样例。#include<iostream&.原创 2020-11-30 00:15:17 · 165 阅读 · 0 评论 -
HDU 4348 To the moon(主席树区间更新)
#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#include<map>#include<set>#include<cstdio>#include<algorithm>#define debug(a) cout<<#a<<"="<<.原创 2020-11-25 23:58:41 · 107 阅读 · 0 评论 -
SPOJ-COT Count on a tree求树上的某条路径上第k小的点(LCA+主席树)
https://vjudge.net/problem/SPOJ-COT思路:以1为根,类似原来板子的按照线性序列去开新的主席树,这里按照图的先序遍历开新的主席树。一棵树表示该点到根节点的前缀关系。那么寻找路径上的第k点,利用和LCA的前缀关系。不过这里和之前https://blog.csdn.net/zstuyyyyccccbbbb/article/details/109882553这题有个共同的关于LCA点权的重复部分。在这里通过LL sum=tree[tree[pre].l].sum+t原创 2020-11-25 17:10:05 · 184 阅读 · 0 评论 -
P2617 Dynamic Rankings(动态区间第k大——树状数组套主席树)详解
#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#include<map>#include<set>#include<cstdio>#include<algorithm>#define debug(a) cout<<#a<<"="<&...原创 2020-11-25 00:06:33 · 400 阅读 · 0 评论 -
hdu 4417(区间内小于等于k的数字有多少)[主席树+二分)
Super Mariohdu 4417题目描述:给定一个整数序列,有n个数。有m个询问,询问区间[L,R]内小于k的整数有多少个。输入:第一行是整数T,表示测试用例个数。对每个测试,第一行是整数n,m。下一行是n个整数a1, a2, …, an,后面有m行,每行有3个整数L、R、k。输出:对每个测试用例,输出m行,每行是一个询问的答案。数据范围:1 ≤ n, m ≤ 105, 0 ≤ ai ≤10^5, 1 ≤ L ≤ R ≤ n,1 ≤ ai, k ≤10^9思路:主席树+二分。对于给定的H,.原创 2020-10-24 00:23:36 · 398 阅读 · 0 评论 -
P3834 【模板】可持久化线段树 2(主席树)[模板]
主席树学习链接:https://blog.csdn.net/weixin_43914593/article/details/108861279#comments_13569118静态区间第k小板子:#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#include<map>#include<set&原创 2020-10-24 00:16:41 · 190 阅读 · 0 评论