
主席树
bestFy
世界上最最最渣的oier.
展开
-
hdu4348 To the moon
题面在这里题目大意:给一个序列,4种操作:C l r x 时间戳++,并把[l, r]区间内的数都加一。Q l r 询问当前时间戳的[l, r]区间和。H l r x 询问x时间戳的[l, r]区间和。B x 将当前时间戳更改为x。做法:做法就是主席树,每次更改的时候新建一颗线段树,并且维护一个lazy tag即可。原创 2017-12-03 17:45:36 · 320 阅读 · 0 评论 -
zoj2112 Dynamic Rankings
题面在这里题目大意:给一个序列,要求维护一个数据结构支持单点修改,区间查询第k大。动态第k大,树状数组套主席树。第一次写树套树。#include#include#include#include#include#include#include#include#include#define rep(i, x, y) for (int i = (x);原创 2017-11-29 23:12:06 · 290 阅读 · 0 评论 -
【Notes】【主席树】hdu2665 Kth number
题面在这里题目大意:给一个长为n的序列,m次询问,每次询问[l, r]内第k小的数是几。 n <= 100000, m <= 5000emmmm这题其实和poj2104一模一样的。不过poj的那题我用的是划分树,这题用一下主席树。(划分树是不支持修改的)主席树又名函数式线段树balabalabala....(关于主席树的简介包括名字来...原创 2017-11-27 23:49:36 · 18914 阅读 · 27 评论 -
bzoj2588: Spoj 10628. Count on a tree
题面在这里题意:给一棵树,多组询问,每次询问u,v路径上点权的第k小。做法:本题卡时间,只能带一个log。 考虑每个节点维护一个到根的权值线段树,查询x,y的路径上的和就是sum[x]+sum[y]-sum[lca(x,y)]-sum[fa[lca(x,y)]]。 于是每次只要把4个数传进参数里。qwq不用二分。另外这题可以树链+二分+树套树,log^4,不过会T.代码:/***********原创 2017-12-26 08:39:46 · 234 阅读 · 0 评论 -
bzoj3772: 精神污染
题面在这里题意:给出一个树,共n个节点。 有m条互不相同的树上路径。 现在让你随机选择2条路径,问两条路径存在包含关系的概率(输出最简分数)。 n,m<=100000做法:假如我们把所有路径存下来,对于x,y的一条路,在x处打一个y标记,在y处打一个x标记,那么我们查询的时候,只要查询x,y两侧分别有多少标记就可以了,因为x,y两侧的点形成的路径肯定包含x-y。再说得明白一点,就是假如你对每个原创 2017-12-23 12:10:11 · 572 阅读 · 0 评论 -
bzoj3123: [Sdoi2013]森林
题面在这里题意:给一个森林,森林有n个节点m条边。 现在有两种操作: 1.Q x y k 表示询问x-y这条链上点权的第k小。保证x,y在同一个连通块里。 2.L x y 表示链接x,y两点。保证x,y在不同的连通块里。 要求强制在线,last表示上一次的答案,每次x,y,k都要异或last.初始为0.做法:权值第k小想到主席树。(发现和上一题基本一样除了连接两个点原创 2018-01-08 15:06:46 · 412 阅读 · 0 评论 -
bzoj4012: [HNOI2015]开店
题面在这里题意:给一棵树,每个点上有点权,边上有边权。 每次询问一个u,l,r,输出点权在[l,r]范围内的点到u的距离和。 强制在线。做法:考虑一棵树上所有点到一个点的距离和怎么求。 不难发现应该等于所有点的深度和+点数×u的深度-2×所有点与u的lca的深度和。 于是问题就在于求所有点与u的lca的深度和。 对于这个问题,我们可以先把每个点到根的路径都打标记,原创 2018-01-08 19:23:24 · 320 阅读 · 0 评论