淀粉质问题求复杂度证明
  • 板块题目总版
  • 楼主user100566
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/11/7 08:57
  • 上次更新2024/11/7 15:40:10
查看原帖
淀粉质问题求复杂度证明
705702
user100566楼主2024/11/7 08:57

树上点对距离问题中,为了去重,有的算法会在子树中减去重复数量。

形式化的,设当前分治树根为 TT ,TT 的直接子结点树为 T1,T2,T3,…,TmT_1,T_2,T_3,\dots,T_m 。

f(x,y)f(x, y) 计算当前分治树根意义下,以 xx 为根的树中过 xx 且长度 ≤y\le y 的点对路径数。

g(x,y)g(x, y) 用尺取法计算当前分治树根意义下,以 xx 为根的树中满足 dis(x,s)+dis(x,t)≤ydis(x, s)+dis(x,t)\le y 的点对 (s,t)(s, t) 数量,即不限制点对在同一个子树中的 ff。

则 f(T,k)=g(T,k)−Σi=1mf(Ti,k−2dis(T,T−i))f(T, k)=g(T, k)-\Sigma_{i=1}^mf(T_i, k-2dis(T, T-i))

如果不考虑去重问题,算法的主要复杂度在排序上,复杂度上界为

O(n∗log⁡n+2∗n2∗log⁡n2+4∗n4∗log⁡n4+...+n∗nn∗log⁡nn)O(n*\log n+2*\frac{n}{2}*\log \frac{n}{2}+4*\frac{n}{4}*\log \frac{n}{4}+...+n*\frac{n}{n}*\log \frac{n}{n})

=O(n∗Σi=0log⁡2nlog⁡n2i)=O(n*\Sigma_{i=0}^{\log_2 n}\log\frac{n}{2^i})

=O(n∗Σi=0log⁡2ni)=O(n*\Sigma_{i=0}^{\log_2 n}i)

=O(n(log⁡n)2)=O(n(\log n)^2)

ff 的是否会导致复杂度超过 O(n(log⁡n)2)O(n(\log n)^2) ? 求证明。

2024/11/7 08:57
加载中...