随笔分类 - 数据结构
摘要:点分治在处理树上路径问题时非常的好使QWQ 例题: luogu P2664 树上游戏 题解 luogu P5306 [COCI2019] Transport 题解 luogu CF1303G Sum of Prefix Sums 题解
阅读全文
摘要:考虑点分治。 那么现在问题就是如何快速求出跨过分治中心的点对之间的贡献。 我们考虑分治中心到叶节点路径上某种颜色的第一个节点,显然这个点的子树的每一个节点因为该种颜色产生的贡献都为$1$,我们用$color[i]$记录第$i$种颜色以此方法产生的贡献。并记$sum=\sum color[i]$。 现
阅读全文
摘要:首先我们考虑如果题目要求的不是子树平方和而是子树和,也就是$\sum_^siz[i]$,那么每个点的贡献就是他到根的距离加一,所以答案也可以写成: \(\sum_{i=1}^{n}a[i] \times dis(i,p)+Sum\)(其中$p$表示当前的根,$a[i]$表示点$i$的点权,\(Sum
阅读全文
摘要:李超线段树模板题。 大概思路呢,就是每个区间留着一个标记$tag$表示在这个区间中点函数值最大线段的编号,然后在不停的放线段进去递归处理就行了。 代码:
阅读全文
摘要:这里是一种动态点分治的解法(不过听说树剖+主席树更快?)。 首先先考虑除去年龄的限制这道题怎么做。也就是给你一棵树,每次询问一个点到所有其他点的距离和。 由于路径问题不太关系树的形态,并且问的又是一个点和整棵树之间的关系,所以可以考虑动态点分治: 每个点保存它在点分树内的子树的信息 设$dis1[i
阅读全文
摘要:算是一道动态点分治入门题(我太弱了加起来学了三天)。 拿到题首先考虑如何暴力,我们可以随机钦定一个点(不妨就设$1$)为根节点,然后算出补给站设在该点的总花费,然后算出补给站在每个儿子时的总花费,显然最多只会有一个儿子花费比它(当前点)本身小(当且仅当$sum[u] include include
阅读全文

浙公网安备 33010602011771号