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

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

形式化的,设当前分治树根为 TTTT 的直接子结点树为 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,k2dis(T,Ti))f(T, k)=g(T, k)-\Sigma_{i=1}^mf(T_i, k-2dis(T, T-i))

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

O(nlogn+2n2logn2+4n4logn4+...+nnnlognn)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=0log2nlogn2i)=O(n*\Sigma_{i=0}^{\log_2 n}\log\frac{n}{2^i})

=O(nΣi=0log2ni)=O(n*\Sigma_{i=0}^{\log_2 n}i)

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

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

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