二维莫队复杂度分析及块长计算

二维莫队复杂度分析及块长计算


分析

设一个矩阵长 \(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 上了。

posted @ 2025-05-04 15:26  Add_Catalyst  阅读(20)  评论(0)    收藏  举报