
主席树
小蒟蒻yyb
Studnet
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【洛谷3834】 【模板】可持久化线段树 (主席树)
题面具体题目不再叙述,参考洛谷 题目大意,求区间[l,r]中第k大的树题解主席树很经典的运用 首先将值离散化之后,构建一颗值域线段树 储存区间和 0版本的线段树是空树 每次在值域上增加1就重构一颗线段树很显然,任意两颗相邻线段树的值得和差为1 而相同的区间内要么相等要么多1那么,我们也很容易的可以推出,区间第k大可以通过第r版本和第(l-1)版本的线段树算出来 每次计算左儿子 如果r原创 2017-08-21 23:40:07 · 883 阅读 · 0 评论 -
【BZOJ2653】Middle(主席树)
题面BZOJ 洛谷Description一个长度为n的序列a,设其排过序之后为b,其中位数定义为b[n/2],其中a,b从0开始标号,除法取下整。给你一个 长度为n的序列s。回答Q个这样的询问:s的左端点在[a,b]之间,右端点在[c,d]之间的子序列中,最大的中位数。 其中aInput第一行序列长度n。接下来n行按顺序给出a中的数。 接下来一行Q。然后Q行每行a,b,c,d,我们令上个询问原创 2018-04-03 08:12:48 · 268 阅读 · 0 评论 -
【CF484E】Sign on Fence(主席树)
题面懒得贴CF了,你们自己都找得到 洛谷题解这不就是[TJOI&HEOI 排序]那题的套路吗。。。 二分一个答案,把大于答案的都变成11,其余变成00 按照题目要求的区间内连续的KK个 就是检查最长的连续11的子段长度大于KK 所以维护11的子段长度(这也是原题吧??)因为范围比较大,不能每次开线段树计算 我们发现每次将范围增大的时候,在线段树上可以直接做一定的修改 又因为要维护所有的原创 2018-04-02 21:19:10 · 356 阅读 · 0 评论 -
【CF813E】Army Creation(主席树)
题面CF 洛谷 翻译 by ppl 见洛谷题解考虑最多只会有KK个相同的数 那么,也就是说,如果一个数会被选 那么,和它相等的数中,在它前面的第KK的位置应该小于ll 所以开个vectorvector直接搞 然后按照前面的第KK个数的位置插入主席树 查询0..l−10..l-1的值即可#include<iostream>#include<cstdio>#include<cstdli原创 2018-04-02 20:55:13 · 426 阅读 · 0 评论 -
【HDU5919】SequenceII(主席树)
题面Vjudge 翻译(by ppl)给一个长度为N的数列A,有m个询问,每次问数列[l,r]区间中所有数的第一次出现的位置的中位数是多少题解先考虑一下怎么求区间内有多少个不同的数 方法有两种第一种: 记录一下每个数上一次出现的位置 每次将这个位置+1 最后求l,rl,r区间内的数的个数 也就是求区间内上一次出现的位置在ll左侧的数的个数 直接查询区间和即可第二种: 将序列到过来原创 2018-04-02 16:09:01 · 265 阅读 · 0 评论 -
【SYZOJ279】滑稽♂树(树套树)
题面SYZOJ CJOJ题目描述zzsyz实验楼里面种了一棵滑稽树,只有滑稽之力达到大乘期的oier才能看到。虽然我们看不到,但是还是知道一些信息:这真的是一棵树,由n个节点,n-1条边联通。一号滑稽果同时也是整棵滑稽树的树根。滑稽树上每个节点有一个滑稽果,每个滑稽果有它的重量。雪甜甜公主是神犇当然看得到那棵滑稽树啦,现在她感兴趣的是这样三件事1:滑稽树太大啦,雪甜甜公主有的时候只想知道,在以某一原创 2018-03-14 15:18:23 · 343 阅读 · 0 评论 -
【BZOJ4556】字符串(后缀数组,主席树)
题面BZOJ题解注意看题: 要求的是[a,b][a,b]的子串和[c,d]的lcplcp的最大值先来一下暴力吧 求出SASA之后 暴力枚举[A,B][A,B]之间的后缀 求一个lcplcp 复杂度O(nm)O(nm) 4040分到手#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#includ原创 2018-02-25 16:26:19 · 336 阅读 · 0 评论 -
【BZOJ1146】网络管理(主席树,树状数组)
题面BZOJ权限题,洛谷题面题解树上带修改主席树 貌似和Count On A TreeCount\ On\ A\ Tree那题很相似呀 只需要套上一个树状数组来维护修改好就好了 但是记住是用dfsdfs来记录主席树的标号 一定不要搞错了 每一次修改只会影响他子数的值 而在dfsdfs序上就是连续的一段 美滋滋的做完了#include<iostream>#include<cstdio>原创 2018-02-05 09:07:28 · 268 阅读 · 0 评论 -
【BZOJ4012】开店(主席树)
题面Description风见幽香有一个好朋友叫八云紫,她们经常一起看星星看月亮从诗词歌赋谈到 人生哲学。最近她们灵机一动,打算在幻想乡开一家小店来做生意赚点钱。这样的 想法当然非常好啦,但是她们也发现她们面临着一个问题,那就是店开在哪里,面 向什么样的人群。很神奇的是,幻想乡的地图是一个树形结构,幻想乡一共有 n 个地方,编号为 1 到 n,被 n-1 条带权的边连接起来。每原创 2018-01-06 11:29:24 · 282 阅读 · 0 评论 -
【BZOJ4571】美味(主席树)
题面Description一家餐厅有 n 道菜,编号 1…n ,大家对第 i 道菜的评价值为 ai(1≤i≤n)。有 m 位顾客,第 i 位顾客的期 望值为 bi,而他的偏好值为 xi 。因此,第 i 位顾客认为第 j 道菜的美味度为 bi XOR (aj+xi),XOR 表示异或 运算。第 i 位顾客希望从这些菜中挑出他认为最美味的菜,即美味值最大的菜,但由于价格等因素,他只能从第 li原创 2017-12-30 11:26:12 · 235 阅读 · 0 评论 -
【BZOJ2006】超级钢琴(主席树,优先队列)
题面BZOJ题解既然是一段区间 首先就要变成单点 所以求一个前缀和这个时候贪心很明显了: 枚举每一个点和可以和它组成一段的可行的点 全部丢进一个堆里面 取出最大的KK个就行了但是,很显然,我们做不到都取出来 所以,考虑怎么优化这个过程每次堆里面对于每个点就原创 2018-01-22 20:42:37 · 270 阅读 · 0 评论 -
【BZOJ3932】任务查询系统(主席树)
题面Description最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分。超级计算机中的 任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任务从第Si秒开始,在第Ei秒后结束(第Si秒和Ei秒任务也在运行 ),其优先级为Pi。同一时间可能有多个任务同时执行,它们的优先级可能相同,也可能不同。调度系统会经常向 查询系统询问,第Xi原创 2017-12-27 16:12:49 · 236 阅读 · 0 评论 -
【BZOJ1926】粟粟的书架(主席树,前缀和)
题面Description幸福幼儿园 B29 班的粟粟是一个聪明机灵、乖巧可爱的小朋友,她的爱好是画画和读书,尤其喜欢 Thomas H. Co rmen 的文章。粟粟家中有一个 R行C 列的巨型书架,书架的每一个位置都摆有一本书,上数第i 行、左数第j 列 摆放的书有Pi,j页厚。粟粟每天除了读书之外,还有一件必不可少的工作就是摘苹果,她每天必须摘取一个指定的 苹果。粟粟家果树上的苹果有的高原创 2018-01-03 16:57:58 · 323 阅读 · 0 评论 -
【BZOJ3295】动态逆序对(线段树,树状数组)
题面Description对于序列A,它的逆序对数定义为满足iInput输入第一行包含两个整数n和m,即初始元素的个数和删除的元素个数。以下n行每行包含一个1到n之间的正整数,即初始排列。以下m行每行一个正整数,依次为每次删除的元素。Output输出包含m行,依次为删除每个元素之前,逆序对的个数。Sample Input5 4153425142Sample Output5221题解显然可以CDQ分治原创 2017-12-27 19:52:47 · 286 阅读 · 0 评论 -
【BZOJ3123】森林(主席树,启发式合并)
题面神TM题面是图片题解首先,求树链上第k大,请参看BZOJ2588 Count On a Tree 这道题目于是增添了一个动态的合并森林的操作 所以直接启发式合并就可以啦 我第一次交直接T了 加了一堆rg就AC了。。。 神奇的register#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#i原创 2017-12-26 22:27:13 · 277 阅读 · 0 评论 -
【BZOJ2588】Count On a Tree(主席树)
题面题目描述给定一棵N个节点的树,每个点有一个权值,对于M个询问(u,v,k),你需要回答u xor lastans和v这两个节点间第K小的点权。其中lastans是上一个询问的答案,初始为0,即第一个询问的u是明文。输入格式:第一行两个整数N,M。第二行有N个整数,其中第i个整数表示点i的权值。后面N-1行每行两个整数(x,y),表示点x到点y有一条边。最后M行每行两个整数(u,v,k),表示一组原创 2017-12-25 19:20:49 · 201 阅读 · 0 评论 -
【BZOJ1901】【Luogu2617】Dynamic Ranking(主席树,树状数组)
题面神TM BZOJ权限题 Luogu真良心题解如果不考虑修改 很容易的主席树区间第K大 考虑修改 那么修改操作复杂度O(nlogn)O(nlogn) 因此,将区间的和利用树状数组来维护 修改复杂度降为O(log2n)O(log^2n) 虽然查询的复杂度升为O(log2n)O(log^2n) 但是整体复杂度变为O(mlog2n)O(mlog^2n) 于是就愉快的AC了#includ原创 2017-12-25 19:15:30 · 244 阅读 · 0 评论 -
【CJOJ2316】【模板】可持久化线段树
题面Description这是一道非常直白的可持久化线段树的练习题,目的并不是虐人,而是指导你入门可持久化数据结构。 线段树有个非常经典的应用是处理RMQ问题,即区间最大/最小值询问问题。现在我们把这个问题可持久化一下: Q k l r 查询数列在第k个版本时,区间[l, r]上的最大值 M k p v 把数列在第k个版本时的第p个数修改为v,并产生一个新的数列版本 最开始会给你一个数列,作原创 2017-08-20 14:37:56 · 328 阅读 · 0 评论 -
【BZOJ5319】军训列队(主席树)
题面BZOJ 洛谷题解一眼题既视感。。。 首先很明显,每次询问的结果显然是做一次离散。 然后直接上主席树就好了。。。 查询答案的方式也很简单 考虑一下那个绝对值是个什么东西 如果所有的点都在目标区间以左 则直接区间和去算一下。 如果所有的点都在目标区间以右 好像和在左边一样的。 否则,把区间隔开计算就好了。#include<iostream>...原创 2018-05-30 22:31:56 · 247 阅读 · 0 评论