
可持久化数据结构
mis_deer
Make_myself.
展开
-
[HDU 2665] Kth number (主席树入门)
HDU - 2665 静态区间第 k大 这道题有很多种比主席树简单了一万倍的算法 不过作为主席树入门还是很合适的 orz这题的具体做法就是,先离散化值,在建立权值线段树 从左到右扫一遍数组,对第 i个数,在 A[i]的位置 +1 然后询问 [l,r]的时候直接找出 l-1和 r这两个时间的主席树 根据左儿子值的个数,来决定接下来是往左走还是往右走 和整体二分一样,往右走的时候要减去左边原创 2016-08-05 19:47:53 · 428 阅读 · 0 评论 -
[SPOJ 3267] D-query (主席树入门)
SPOJ - 3267 给定一个序列,询问区间内有多少个不同的数 这题有离线询问+树状数组的解法 这里是主席树的在线解法 基本思路和离线的一样,只不过在线了一下 能离线还是离线比较好#pragma comment(linker, "/STACK:102400000,102400000") #include <cstdio> #include <iostream> #include <cst原创 2016-08-06 14:45:06 · 590 阅读 · 0 评论 -
[HDU 5790] Prefix (字符串hash+主席树)
HDU - 5790 给定 NN个字符串,问区间 [L,R][L,R]的字符串中 共有多少个不同的前缀 其中所有字符串的长度和不超过 10510^5 并且此题强制在线 由于所有字符串的长度和不超过 10510^5 所以所有可能的前缀最多 10510^5 给所有前缀hash一下,然后问题就转化为了 在某个区间 [l,r][l,r]上,有多少个不同的数,即 SPOJ - D-原创 2016-08-06 16:08:03 · 631 阅读 · 0 评论 -
[HDU 5820] Lights (扫描线+主席树)
HDU - 5820 给定一个网格图,上面有 N个灯 求任意两个灯之间,是否至少存在一条曼哈顿最短路径 使得路径上的每一个拐点都有一个灯 主席树+扫描线 枚举每一个节点,利用主席树维护一下 这个点及左边最近节点、上面最近节点三个点构成的矩形 以及此点、右边最近节点和上面最近节点三个点构成的矩形 这两个矩形内是否存在点,如果存在,那么就是不合法的图具体主席树就是每一行建一棵树,原创 2016-08-10 16:20:27 · 675 阅读 · 0 评论 -
[HDU 5956] The Elder (斜率DP + 可持久化单调队列)
HDU - 5956 树上的一个斜率DP裸题 用斜率DP加可持久化单调队列强行搞。 可持久化单调队列就是弹的时候用二分在log时间内确定弹到什么位置 然后加入的时候一次只修改一个,只要备份一下原来的一个值即可 这题注意开一下longlong#pragma comment(linker, "/STACK:102400000,102400000") #include <cstdio> #inc原创 2016-11-11 19:56:49 · 943 阅读 · 0 评论