"嘟嘟嘟" 如果不是森林,很自然想到树上主席树。 但现在他是个森林,那就lct+主席树? 不,怎么会那么毒瘤。 只要启发式合并就好啦。 不用垃圾回收(主席树启发式合并垃圾回收似乎很麻烦)。需要注意的是,一定要处理好较小树节点的新的元素,包括深度,父亲……最重要的是求lca的倍增数组,一定要都清空,因 ...
分类:
其他好文 时间:
2019-04-02 21:22:51
阅读次数:
155
"传送门" 主席树裸题,考虑出现一半次数以上的数一定是这个区间的中位数,查询中位数再判断一下中位数出现的次数就好了 注意要离散化 代码: c++ include include include include using namespace std; void read(int &x) { char ...
分类:
其他好文 时间:
2019-03-31 22:10:14
阅读次数:
207
题目大意 静态区间查询不同数的个数。 分析 好了,成功被这道题目拉低了AC率。。。 打了莫队T飞掉了,真的是飞掉了QwQ。 蒟蒻想不出主席树的做法,就换成了莫队。。。 很多人都不知道莫队是什么。。。 一句话概括莫队:离线询问分块排序,玄学降低复杂度 那么这道题目就是简单的莫队模板套一下就好了,每一次 ...
分类:
其他好文 时间:
2019-03-30 21:31:34
阅读次数:
188
"$\verb|bzoj3524 [POI2014]Couriers|$" 静态区间,询问出现次数严格大于区间长度一半的数 $n,\ m\leq5\times10^5$ 主席树 用主席树维护,在当前区间 $[l,\ r]$ 中,如果 $[l,\ mid]$ 的数字出现次数严格大于询问区间长度的一半, ...
分类:
其他好文 时间:
2019-03-29 23:38:19
阅读次数:
165
题意分析 首先$\%\%\%\%olinr$以及花_Q$julao$当场切题 然后就是怎么求 $$max(|a A|,|b B|)=max(a A,A a,B b,b B)$$ 我们令$x_1=(a+b)/2,x_2=(A+B)/2,y_1=(a b)/2,y_2=(A B)/2$ $$max(x_ ...
分类:
其他好文 时间:
2019-03-29 21:04:38
阅读次数:
161
传送门 看到森林有合并首先会想到 $LCT$ ,然后发现链上第 $K$ 小不可维护 感觉 $LCT$ 只维护合并也有点大材小用了,考虑合并时直接启发式合并就可以不用 $LCT$ 然后求第 $K$ 小显然考虑主席树 对每个节点维护一个主席树,维护它到树根这的一段区间,那么当前节点的线段树可以直接借用父 ...
分类:
其他好文 时间:
2019-03-27 21:35:25
阅读次数:
153
题意:给你一个数组a,有m次询问,每次问区间[l, r]中最多可以取多少个数字(相同的数字最多取k个),强制在线。 思路:可以先预处理一个数组b,b[i]指和a[i]相同的从i开始第k + 1个数的位置。求出b数组后,如果询问区间[l, r]中的数,若b[i]大于r,说明从这个数往后的和b[i]相同 ...
分类:
其他好文 时间:
2019-03-26 13:30:54
阅读次数:
169
T1 sort 题目大意: 思路: T2 mission 题解链接 考场的$dsu \space on \space tree$被卡掉了,写一波主席树合并 1 #include<bits/stdc++.h> 2 #define ll long long 3 #define db double 4 # ...
分类:
其他好文 时间:
2019-03-23 13:07:55
阅读次数:
170
"题目链接 $Click$ $Here$" 线段树合并,没想到学起来意外的很简单,一般合并权值线段树。 建树方法和主席树一致,即动态开点。合并方法类似于$FHQ$的合并,就是把两棵树的信息整合到一个里面。暂时没写过定义域不同的线段树合并,具体方法也想象不出来,写到了再详细讲吧。 算法复杂度:均摊$O ...
分类:
其他好文 时间:
2019-03-18 21:07:41
阅读次数:
177
"题目链接 Click Here" 这个题好像大多数人用的都是左偏树啊?这里我来贡献一发主席树的解法。 把题目中的问题抽象出来,其实就是询问每一个点的子树中,工资前$tot_i$大的点,使它们的和满足$\sum cost_i using namespace std; define int long ...