主席树
HT008_123
家人们点点关注叭
展开
-
[南昌网络赛] Distance on the tree
题目描述:给出一个 N 节点 的树,N-1个边权每次求 U-V上小于等于K的边权个数题目分析:树上主席树把边权下放到深度比较深的节点转为点权求解的时候由于每个点上维护的是点到父亲的值,所以求解的时候应该是 sum[u]+sum[v]-2*sum[lca]题目链接:Distance on the treeAC代码:#include <iostream>#includ...原创 2019-11-07 22:43:00 · 128 阅读 · 0 评论 -
[SP10628] COT - Count on a tree
题意描述:给出一个N节点的树,每个点有点权M个询问 每次询问 U->V路径上的第k值题目分析:区间第K值主席树。树上主席树维护点权得出的当前答案应该是 sum[u]+sum[v]-sum[lca]-sum[fa[lca]]题目链接:SPOJ 10628AC代码:#include <iostream>#include <cstdio>#includ...原创 2019-11-07 22:38:05 · 140 阅读 · 0 评论 -
2019牛客暑期多校训练营(第九场) H Cutting Bamboos
题目描述:英语差题目分析:思路来自这位大佬Orz我们二分一个最高的整数,用主席树查询,满足区间内 ans及以上高度的和大于等于第x次切除的,把ans+1上的去处,然后就可以算出答案来了。主席树上查树上的数字和以及数量代码:#include <cstdio>#include <iostream>#include <cstring>#defin...原创 2019-08-15 20:51:39 · 310 阅读 · 0 评论 -
[Luogu 1383] 高级打字机
题目描述:QAQ…题目分析:要求可持久化,就搞一下主席树就行了,回退版本相当于新建版本,然后复制回退到的版本信息…题目链接:Luogu 1383Ac 代码:#include <cstring>#include <algorithm>#include <cstdio>#include <iostream>co...原创 2018-04-27 10:46:23 · 353 阅读 · 0 评论 -
[CTSC2008] 网络管理Network
题目描述:求树链第K大权值,带修.题目分析:如果不带修的话就是个裸的LCA+主席树惹~ 带修惹那就得写带修主席树了… 本题有很多写法 Po猪先写了二分树剖树套树… 复杂度不太科学啊… 反正过了…写了一上午… Splay的常数啊…无力吐槽… 带修主席树…还没写题目链接:Luogu 4175Ac 代码:二分树剖树套树#include <cs...原创 2018-04-23 11:17:55 · 320 阅读 · 0 评论 -
[SDOI2010] 粟粟的书架
题目描述:给出 N * M 的 表格 每个位置有一个权值 K 给出 Q 个查询 每次查询限定一个矩形区域 问至少在本矩形区域内取出多少个元素才可以>=Qi题目分析:YY了半天没想出来 看了下数据范围就懂了! 对于50%的数据,满足R, C≤200,M≤200,000; 另有50%的数据,满足R=1,C≤500,000,M≤20,000; 很明显是要我们分情况写算法...原创 2018-03-29 09:09:07 · 212 阅读 · 0 评论 -
[POI2014] KUR-Couriers
题目描述:求区间内是否有出现次数超过一半的数题目分析:在主席树的搞搞就好题目链接:Luogu 3567 LOJ 2432Ac 代码:#include <cstdio>#include <iostream>#include <algorithm>#include <cmath>const int max...原创 2018-04-04 10:41:18 · 174 阅读 · 0 评论 -
[国家集训队] middle
题目描述:求子序列最大中位数题目分析:先考虑怎么求判断一个数是不是中位数 我们把大于本数的全部设为1,小于本数的设为-1 如果和==0,那么就说明是一个中位数 那么我们就可以用二分中位数,然后修改判断 O(Q∗N(logN)2)O(Q∗N(logN)2)O(Q*N(logN)^2) 因为修改是O(N)的,太浪费时间了 考虑如何优化 用主席树进行预处理 将每个数二分时...原创 2018-04-11 14:12:03 · 301 阅读 · 0 评论 -
(SPOJ)QTREE - Query on a tree 系列 题解
1:QTREE 1简单描述: 多组数据,维护树上边权,资瓷询问路径最大边权以及修改某个边权. 分析: 简单的树链剖分,转化维护边权为点权,注意初始化#include <cstdio>#include <iostream>#include <algorithm>#include <cstring>const int inf=0...原创 2018-04-10 09:40:59 · 222 阅读 · 2 评论 -
[SPOJ 10628] Count on a tree
题目描述:一棵树,每个点有点值,求U-V路径上的第K小值题目分析:主席树,用树上主席树LCA方法搞一下就行了,注意递归建树(大雾题目链接:BZOJ 2588 Luogu 2633Ac 代码:#include <cstdio>#include <iostream>#include <cstring>#includ...原创 2018-04-08 10:31:14 · 216 阅读 · 0 评论 -
[SDOI2013] 森林
题目描述:给出一个森林 求 1 : u -> v 路径上的第K小值 2:u v 合并 u v 所在树题目分析:合并?LCT? LCT没法维护第K值啊(雾 动态维护第K值肯定是要用主席树的 在树上建立主席树,我们新的节点继承父亲树信息 查询的时候求LCA,然后消除影响 合并的话我们就搞一下启发式合并qwq O(Q∗logn2)O(Q∗logn2)O(Q*logn...原创 2018-03-30 08:43:43 · 235 阅读 · 0 评论 -
[BZOJ 3261] 最大异或和
题目描述:记b[i]为1到i的a的异或和 则求max(b[p]^b[n]^x) (l-1<=p<=r-1)题目分析:如果没有范围限制,那么就可以用朴素的Tire树去搞一下. 加入了范围限制,需要我们搞一个资瓷可持久化的东西. 我们用主席树的方法,只是在上面走的时候用的是位的性质。 我们插入的时候只需要查询当前位是否为0,然后判断左右走即可 查询的时候利用前缀和进行...原创 2018-03-11 09:45:23 · 137 阅读 · 0 评论 -
[Scoi 2016] 美味
题目描述:给出 N 个 A 给出 Q 个 询问 每个询问有四个量 分别为 B,X,L,R 每个A 的价值为 B xor (X+Ai)(l<=i<=r)B xor (X+Ai)(l<=i<=r)B\ xor\ (X+A_i)(l[ans−x,ans+(1<<i)−1−x][ans−x,ans+(1<&l...原创 2018-03-10 20:11:12 · 182 阅读 · 0 评论 -
Count on a tree
树上的主席树。 从父节点建树。 容斥原理 root[a]+root[b]-root[lca(a,b)]-root[fa[lca(a,b)]] 上的第k大。#include <cstdio>#include <iostream>#include <algorithm>#define il inline#define ls l,mid#define rs mid+1,rusing nam原创 2018-01-03 16:35:11 · 237 阅读 · 0 评论 -
BZOJ 3932 任务查询系统
链接 看一下问题,emmmmm 动态查询前K小 很明显就用主席树啦。 具体怎样实现呢? 以时刻为下标,优先级为区间建主席树。对于在一个区间[l,r]内存在的任务,在l处出现次数加1,在r+1处出现次数减1,把这些看作事件,将时刻i所有发生的时间加入i的线段树。然后就可以在T[x]上统计答案了。 给我们的时间不一定就是端点,所以要对输入的时间进行迁移。 查询的方法emmmmm 二分呗。原创 2018-01-03 11:28:42 · 262 阅读 · 0 评论 -
[Cqoi2011]动态逆序对
主席树套树状数组。 主席树第一题。 链接 静态的逆序对问题很简单,用线段树或者是树状数组即可解决。 现在的问题是如何解决一道动态的逆序对问题? 我们先把所有的逆序对统计出来。 每次删除数,我们可以把这个数对于逆序对个数的贡献删除出去。 这个贡献如何统计呢? Front[i]记录i位置之前有多少个数比这个数大 Back[i]记录i位置之后有多少个数比这个数小 每次删除的贡献就是这两原创 2018-01-02 16:30:19 · 397 阅读 · 0 评论 -
静态主席树
首先来考虑一个问题 给你N个数字 然后是M次询问 每次查询 l-r第k大的数是多少? n、m的范围都是 10^5最暴力的方法也就是把这些数拿出来,然后Sort输出结果 这样的复杂度是O(m×n logn) 现在想一下如何用线段树来解决 l-r 中k值的问题 建一棵线段树 每个节点 代表l-r 区间 数字的个数 要求第k小,也就是与个数相关,那么我们可以 以[l,r]区间内的数的个数来原创 2017-12-27 16:50:53 · 217 阅读 · 0 评论 -
动态主席树
经过几天的疯狂学习,咸鱼博主终于学会了动态主席树!书接上文。 在上一篇博文里学习了静态主席树的写法。 核心思想就是在原有的基础上建立新的线段树。 但是那只能解决静态的问题。 如果我们在原有的查询操作上加入单点修改,又该如何用主席树实现呢?例子 1 2 10 9 8 建好线段树森林(省略~) 操作 更改 2 位置的数 变为 6 如果我们直接暴力对从2开始的每一个线段树都进行一次修改 时原创 2018-01-02 10:36:21 · 229 阅读 · 0 评论