差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン次のリビジョン両方とも次のリビジョン | ||
programming_algorithm:data_structure:sparse_table [2019/12/05] – [±1-RmQ] ikatakos | programming_algorithm:data_structure:sparse_table [2019/12/05] – [±1-RmQ] ikatakos | ||
---|---|---|---|
行 124: | 行 124: | ||
ブロック内の変化は、今回1ブロック3要素なので、%%「++」「+-」「-+」「--」%%の4通りしかない。 | ブロック内の変化は、今回1ブロック3要素なので、%%「++」「+-」「-+」「--」%%の4通りしかない。 | ||
- | ブロック内での、各パターンの区間 の最小値配列は、事前計算で作っておいても間に合う容量である。(ブロックサイズを とすると ) | + | なので、全変化パターン・全区間 の最小値配列を事前計算で作っても、現実的な容量で間に合う。 |
+ | ブロックサイズを とすると | ||
+ | |||
+ | 先頭要素が0だったとして、最小値を計算しておく。 | ||
[++] | [++] | ||
行 144: | 行 147: | ||
が良いとされている。端数はどちらでもよいが、とりあえず切り上げとする。 | が良いとされている。端数はどちらでもよいが、とりあえず切り上げとする。 | ||
- | というのも、こうするとブロックの個数は となる。 | + | こうするとSparseTable, |
+ | |||
+ | SparseTableの方は、ブロックの個数が となる。 | ||
この要素数でSparseTableを構築すると、 となる。 | この要素数でSparseTableを構築すると、 となる。 | ||
行 150: | 行 155: | ||
また、個別計算の方も、 となり、 より小さくなる。 | また、個別計算の方も、 となり、 より小さくなる。 | ||
- | |||