Processing math: 100%
[[転倒数]]

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
次のリビジョン両方とも次のリビジョン
programming_algorithm:dynamic_programming:inversion [2018/05/25] ikatakosprogramming_algorithm:dynamic_programming:inversion [2018/09/24] – [転倒数] ikatakos
行 12: 行 12:
  
     3  10       5     3  10       5
 +         ×
     3    10     5     3    10     5
 +             ×
     3      10   5     3      10   5
 +                 ×
     3        10     3        10
 +     ×
     1        10     1        10
 +             ×
     1        10     1        10
  
行 57: 行 62:
  
 ===数列を先頭から順番に処理する=== ===数列を先頭から順番に処理する===
-i 番目(1-indexed)の項を pi とする。+i 番目(1-indexed)の項を pi とする。各項に付き、以下の2つの処理を行う
  
 ==BITに加算する== ==BITに加算する==
 ADD(pi,1)(BITの pi の位置に、1を加算する) ADD(pi,1)(BITの pi の位置に、1を加算する)
  
-==自分よりにある自分より大きい数の個数を求める==+==自分よりにある自分より大きい数の個数を求める==
 先頭から順番に処理しているので、今BITにあるのは「自分より左に各数がいくつあるか」の情報である。 先頭から順番に処理しているので、今BITにあるのは「自分より左に各数がいくつあるか」の情報である。
  
-自分より左で pi より小さい数の個数は、SUM(pi)(BITで 1pi の和)を求めることで得られる。+自分より左で pi 以下の数の個数は、SUM(pi)(BITで 1pi の和)を求めることで得られる。
  
 逆に言うと、pi より大きい数の個数は、iSUM(pi) である。 逆に言うと、pi より大きい数の個数は、iSUM(pi) である。
programming_algorithm/dynamic_programming/inversion.txt · 最終更新: by ikatakos
CC Attribution 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0