1. 程式人生 > 其它 >基於vant的radio元件封裝自己的級聯元件

基於vant的radio元件封裝自己的級聯元件

use C++11

倍增法和二分法可以說是“相反”的演算法,效率都很高。二分法是每次縮小一半,從而以 \(\mathcal{O}(\log n)\) 的速度極快地縮小定位到解;倍增法是每次擴大一倍,也是 \(\mathcal{O}(\log n)\) 速度。

倍增就是“成倍增長”,如何實現倍增,是每步乘以 2 嗎?有時確實可以,如字尾陣列,每次擴充套件字元長度,就簡單地乘以 2。不過,在大多數題目中有更好的實現方法,即利用二進位制本身的倍增特性。

一般地,倍增是通過陣列來完成的。可以設 \(f_{i,j}\),代表 \(i\) 結點向上跳 \(2^j\) 步所能到達的父節點。首先是預處理:\(f_{i,0}=i\)

,然後我們知道:\(2^k=2^{k-1}+{(k-1)}\),因此可以得出 \(f_{i,j}=f_{(f_{i-1,j-1}),j-1}\)

倍增法的侷限性是資料要是靜態不變的,而不是動態變化的。如果資料發生了變化,那麼所有跳板需要重新計算,倍增就失去了意義。

例題