NISHIO Hirokazu
[Translate]
ダブリング
f(x)
が与えられて
f^n(x)
を高速に求めたい
fの定義域・値域の広さをD、nの最大値をNとするなら前処理O(D log N)で本処理O(log N)にできる
前処理
f^{2k}(x) = f^k(f^k(x))
なので
f^k
が既知のの時O(D)で
f^{2k}
が得られる
k=1は既知なので、
k=2^m < N
であるようなkについてO(D log N)で得られる
本処理
nの
二進展開
で1のところだけ前処理結果から選び出して合成すれば良い
二進展開の長さは対数オーダー
Tweet
Related Pages
ARC111
Luzhiled's memo
プログラミングコンテストチャレンジブック
ダブリング→二分探索
最小共通祖先
ダブリングではなくループ検出
abc030_d
ABC179
"
Engineer's way of creating knowledge
" the English version of my book is now available on
[Engineer's way of creating knowledge]
(C)NISHIO Hirokazu / Converted from
[Scrapbox]
at
11/23/2025, 5:17:58 PM
[Edit]