二维莫队复杂度分析及块长计算
二维莫队复杂度分析及块长计算
分析
设一个矩阵长 \(N\),宽 \(M\),题目询问次数为 \(Q\),块长 \(Bn\),块宽 \(Bm\),指针(矩形端点坐标)为 \(x_a,y_a,x_b,y_b\)。
那么,\(x_a,x_b\) 最大更新次数为:\(Bn\),单次更新时间复杂度 \(O(M)\),
同理,\(y_a\) 最大更新次数为:\(Bm\),单次更新时间复杂度 \(O(N)\)。
而 \(y_b\) 对于 \((Xid_{x_a},Xid_{x_b},Yid_{y_a})\) 不变的情况下,最大更新次数 \(N\),单次更新时间复杂度 \(O(N)\)。
计算
可得,总时间复杂度为:
\[\begin{aligned}
& Q(2 Bn \cdot M + Bm \cdot N) + (\frac{N}{Bn})^2 \cdot \frac{M}{Bm} \cdot M \cdot N \\
=\ & Q(2 Bn \cdot M + Bm \cdot N) + \frac{N^3 M^2}{Bn^2 Bm} \\
\end{aligned}
\]
由于本人数学水平有限,故只讨论 \(Bn=Bm\),\(N,M\) 同阶的情况,则算式变为:
\[\begin{aligned}
& 3 Q \cdot B \cdot N + \frac{N^5}{B^3} \\
\end{aligned}
\]
考虑求导:
设 \(f(B)= 3 Q \cdot B \cdot N + \frac{N^5}{B^3}\), \(f'(B) = 3 Q \cdot N - 3 \frac{N^5}{B^4}\),则极值点 \(B_0 = N \cdot Q^{-\frac{1}{4}}\)。
所以块长取 \(B_0\) 时,最小时间复杂度为 \(4 N^2 \cdot Q^{\frac{3}{4}}\),即 \(O(N^2 \cdot Q^{\frac{3}{4}})\)。
加入排序,总时间复杂度为 \(O(N^2 \cdot Q^{\frac{3}{4}} + Q\log_2{Q})\)。
启发
这种数学推导要自己试着算一下,这样后面类似的也就不会有问题了。
注
这篇文章本来被我发在 CSDN 上,结果它神不知鬼不觉给我弄成 VIP 了,所以我就又发在 CNBLOG 上了。

浙公网安备 33010602011771号