关于本题时间复杂度
查看原帖
关于本题时间复杂度
172370
fzj2007楼主2024/3/15 15:49

目前看起来题解的时间复杂度好像都不太正确?

将式子推到

∑T=1f(T)g(⌊nT⌋,T)g(⌊mT⌋,T)\sum_{T=1} f(T)g(\lfloor\frac{n}{T}\rfloor,T)g(\lfloor\frac{m}{T}\rfloor,T)

形式后,对 i,j≤Bi,j \le B 预处理

S(i,j,T)=∑t=1Tf(t)g(i,t)g(j,t)S(i,j,T)=\sum_{t=1}^T f(t)g(i,t)g(j,t)

其中有限制 iT,jT≤niT,jT \le n。(这里认为 n,mn,m 同阶) 计算 SS 的状态数,有

O(∑i=1B∑j=1Bnmax⁡(i,j))=O(2∑i=1B∑j=1ini)=O(∑i=1Bni×i)=O(nB)\mathcal{O}(\sum_{i=1}^B\sum_{j=1}^B \frac{n}{\max(i,j)})=\mathcal{O}(2\sum_{i=1}^B \sum_{j=1}^i\frac{n}{i})=\mathcal{O}(\sum_{i=1}^B \frac{n}{i}\times i)=\mathcal{O}(nB)

那么总时间复杂度为

O(nlog⁡n+nB+T(n+nB))\mathcal{O}(n \log n+nB+T(\sqrt n+\frac{n}{B}))

令 B=TB = \sqrt T 可以得到最优复杂度

O(nlog⁡n+nT+Tn)\mathcal{O}(n \log n+n\sqrt T+T \sqrt n)
2024/3/15 15:49
加载中...