[luoguP3302] [SDOI2013]森林(主席树 + 启发式合并 + lca)传送门显然树上第k大直接主席树如果连边的话,我们重构小的那一棵,连到另一棵上。说起来简单,调了我一晚上。总的来说3个错误:1.离散化写错位置写到了后面2."="写成了"=="3.加双
[BZOJ3339] Rmq Problem(线段树)传送门
这个题的方法好像很多啊
1.莫队暴力
2.线段树 + 离线处理
先预处理出sg[i]表示前i个数的sg值,next[i]表示i的下一位置在哪里,如果后面再没有i,那么next[i] = n + 1
然
[BZOJ3932] [CQOI2015]任务查询系统(主席树 || 树状数组 套 主席树 + 差分 + 离散化)传送门
看到这个题有个很暴力的想法,
可以每一个时间点都建一颗主席树,主席树上叶子节点 i 表示优先级为 i 的任务有多少个。
当 x 到 y 有个优先级为 k 的任务时,循环 x 到
[luoguP1972] [SDOI2009]HH的项链(莫队 || 树状数组 || 主席树)传送门
莫队基础题,适合我这种初学者。
莫队是离线算法,通常不带修改,时间复杂度为 O(n√n)
我们要先保证通过 [ l , r ] 求得 [ l , r + 1 ] , [ l , r 1 ] , [ l 1 , r ]
[luoguP2617] Dynamic Ranking(树状数组 套 主席树 + 离散化)传送门
BZOJ上是权限题,洛谷赞啊。
求区间 K 大数很简单。
但是如果修改某个数的话,那么就得把这个数及后面所建的主席树都更新一遍 nlogn,显然不行。
所以可以在外面套一个
[luoguP1168]中位数(主席树+离散化)传送门
模板题一道,1A。
——代码
1 #include <cstdio>
2 #include <algorithm>
3 #define ls son[now][0], l, mid
4 #define rs son[now][1], mid + 1, r
5
6 us
[HDU4348]To the moon(主席树)传送门
对于这个题,显然要打lazy标记了,但是lazy标记pushdown的时候肯定会增加一大堆节点,然后就MLE了。(题解这么说的,我其实不会pushdown)
所以,就换另一种方式,把标记直接打到当
[HDU4417]Super Mario(主席树+离散化)传送门
又是一道主席树模板题,注意数组从0开始,还有主席树耗费空间很大,数组开大点,之前开小了莫名其妙TLE。QAQ
——代码
1 #include <cstdio>
2 #include <cstring>
3 #
【模板】主席树的学习Kth number
划分树虽然可以做,但是代码不好记。
看某人blog学习了主席树的简单操作。
引用某大牛的话来解释一下主席树:
所谓主席树呢,就是对原来的数列[1..n]的每一个前缀[1









