摘要: 树上查询某一路径上的第k大。 首先,我们只需要处理出路径上的权值线段树即可。 我们建立根到u的前缀和主席树。 那么对于查询u,v。和树上距离的类似。 sum[u] + sum[v] - sum[lca(u,v]] - sum[fa[lca(u,v]]]。 因为这里的话,lca的值也需要算入。所以第二 阅读全文
posted @ 2020-09-05 18:49 levill 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 这题思考如何去查询。 我们可以建主席树。 那么对于区间的数量最多的数,我们可以“松弛“去查找。 当某个区间的数量大于一半时,我们就去找那个区间,然后到叶子节点,那么叶子节点的数量肯定就满足大于区间的一半。 显然这个数最多只能有一个,那么左右区间肯定只有一个被松弛到。 // Author: levil 阅读全文
posted @ 2020-09-05 15:20 levill 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 回顾一下可持久化线段树。 这题是经典的查询静态区间第k小。 对于主席树,可以将每个区间位置,看成第i个历史版本,然后对每个点去维护一棵树。 然后对于第i个点维护的x位置,存的值是1~i的x的前缀和。 查询的时候,比较下前缀和左边是否满足即可。 注意换到右边时,需要减去左区间个数,保证相对第k小。 / 阅读全文
posted @ 2020-09-05 13:55 levill 阅读(153) 评论(0) 推荐(0) 编辑