差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン次のリビジョン両方とも次のリビジョン | ||
programming_algorithm:data_structure:sparse_table [2019/12/05] – ikatakos | programming_algorithm:data_structure:sparse_table [2019/12/05] – [±1-RmQ] ikatakos | ||
---|---|---|---|
行 94: | 行 94: | ||
$A=\{A_0, | $A=\{A_0, | ||
- | この場合、実装はちょっとややこしくなるが、事前計算量と空間を $O(N\log{N})$ から $O(N)$ に落とすことができる。 | + | この場合、実装はちょっとややこしくなるが、クエリ応答は $O(1)$ のまま、事前計算量と空間を $O(N\log{N})$ から $O(N)$ に落とすことができる。 |
なかなか特殊な条件に見えるが、木の最小共通祖先だったり、たまに使える。 | なかなか特殊な条件に見えるが、木の最小共通祖先だったり、たまに使える。 | ||
行 108: | 行 108: | ||
* ブロックを1要素として、SparseTableを構築する | * ブロックを1要素として、SparseTableを構築する | ||
* クエリに対して、完全に覆われるブロック内の最小値はSparseTableで求められる | * クエリに対して、完全に覆われるブロック内の最小値はSparseTableで求められる | ||
- | * はみ出る部分は個別に計算するが、変化パターンが+1か-1のみなので、どのパターンが事前計算して持っておいても大したサイズにならない | + | * はみ出る部分は個別に計算するが、変化パターンが限られるので、事前計算して持っておいても大したサイズにならない |
| |