
主席树
nymph181
这个作者很懒,什么都没留下…
展开
-
【主席树】luogu_3834 可持久化线段树 1(主席树)
题意 给出一个数列,求出l∼rl\sim rl∼r中第kkk小的数是多少。 思路 用线段树维护值域上每个数出现的次数,那么可以一个数一个数地插入,利用到前缀和的思想,用第rrr次插入后的线段树减去第l−1l-1l−1次插入的线段树就可以求出l∼rl\sim rl∼r中每个数出现的次数,进而可以用分治求出第kkk大的数。主席树就提供了支持了查询历史版本的线段树。 代码 #include<cst...原创 2019-05-31 22:22:54 · 207 阅读 · 0 评论 -
【主席树】luogu_3919 可持久化数组(可持久化线段树/平衡树)
题意 如题,你需要维护这样的一个长度为NNN的数组,支持如下几种操作: 1、在某个历史版本上修改某一个位置上的值 2、访问某个历史版本上的某一位置的值 思路 主席树模板 代码 #include<cstdio> #include<algorithm> struct SegmentTree { int lc, rc; int dat; } tree[20000...原创 2019-06-01 17:07:27 · 170 阅读 · 0 评论 -
【主席树】JZOJ_3379 查询
题意 查询区间第KKK大,不过是多个区间拼起来的区间。 思路 在普通区间第KKK大的问题中,我们只是做了一个区间,因为这里小区间的个数很小,所以我们可以直接暴力统计。 代码 #include<cstdio> #include<algorithm> struct node { int lc, rc, dat; }tree[6000001]; int nn, n, m, k...原创 2019-07-11 20:39:44 · 250 阅读 · 0 评论