可持久化数据结构专题
可持久化数据结构的学习专题
黎辰
其实一切只为一个理由,一切理由在一个人面前也都沦为借口
展开
-
hdu 3727 Jewel(主席树学习第四弹)
题目链接:hdu 3727题目大意:给出n个操作,插入一个数,或者查询: - 查询区间第k大 - 查询某个数的排名 - 查询整体第k大 最后问三种查询的结果之和。题目分析:首先对数进行离散化然后对数字建立主席树,第k大的做法详见我的主席树学习第一弹查询某个数的排名,树状数组直接做就好了,记录每个点是否出现过,然后找到sum(x)就是前缀一共有多少个数,也就是当前数的排名。 AC代码:#原创 2015-10-13 21:11:27 · 1593 阅读 · 0 评论 -
hdu 4866 Shooting(主席树学习第三弹)
题目链接:hdu 4866题目大意:给出n条直线,每次查询给出一个x,求这个x位置上方的前k个线段的高度之和。题目分析:首先对高度进行离散化建立主席树,将每条直线对应为两个点,左端点+1,右端点-1,然后每个点建一个线段树,然后每次查询对于一个x,只需要二分查找找到时序点,然后找到线段数量为k的最左的前缀即可。 AC代码:#include <stdio.h>#include <string.h>原创 2015-10-12 19:05:36 · 1398 阅读 · 0 评论 -
hdu 4605 Magic Ball Game(主席树学习第二弹)
题目链接:hdu 4605题目大意:给出一棵二叉树,每个点具有权值,给出q次查询,每次查询给出一个X,找到到达点v的概率(表示为7x/2y7^x/2^y),行走规则为,若X>w[u],那么走到左孩子和右孩子的概率分别是1/2,X题目分析:因为没有强制在线,所以树状数组也是可以做的,大致思路如下: 首先我们要对所有出现的数进行离散化,因为包括查询在内数的个数不会超过10510^5。然后对数建立两原创 2015-10-11 17:40:58 · 1042 阅读 · 0 评论 -
poj 2104 K-th Number (主席树学习第一弹)
题目链接:poj 2104题目大意:给出n个数,询问m次,每次询问在区间[l,r]里的第k大的树。题目分析:其实是可以直接划分树搞的,但是为了学习主席树,写了一发,发现代码量更少更简洁。首先将数字离散化,然后对数字进行建树,然后按照原顺序对主席树进行修改,也就是将数位对应到时序上,那么也就是每次将查询对应到就是查找时序在找到r时序的线段树和l时序的线段树的差,每次向下深入时,就是如果左子树的数的原创 2015-10-10 22:20:53 · 1258 阅读 · 0 评论