标签:需要 动态插入 线段树 不难 现在 简化 树状 参考 线段
LINK:紫荆花之恋
每次动态加入一个节点 统计 有多少个节点和当前节点的距离小于他们的权值和。
显然我们不能n^2暴力。
考虑一个简化版的问题 树已经给出 每次求某个节点和其他节点的贡献。
不难想到我们直接把所有点的答案求出来 直接输出就好了 求所有点的答案 可以上点分治了树状数组维护一波就行了。
但是现在是单点求值。不难想到动态点分治。每个分治的点存一下儿子距自己的距离由小到大排序的结果 我们在对应分治节点上二分 注意减掉自己子树内的贡献即可。
减掉自己子树内的不妨 在每个点处维护自己的父亲到自己的点的距离可以发现 这样建树 查询 都不超过log^2
考虑动态插入一个点 再求值。动态插入我们就需要一棵平衡树来做这个问题了。
可以发现当插入一个点的时候 我们直接插入到对应的点分树上的父亲的下方。
这个时候考虑重构 类似于替罪羊树 我们暴力重构点分树。
参考替罪羊树的复杂度分析 最多重构nlogn个节点 每个节点要重构 维护点分树的形态+每个点的线段树的修改。
复杂度nlog^3?实际远远达不到这个复杂度。
标签:需要 动态插入 线段树 不难 现在 简化 树状 参考 线段
原文地址:https://www.cnblogs.com/chdy/p/12538493.html