差分

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

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
次のリビジョン両方とも次のリビジョン
programming_algorithm:data_structure:binary_indexed_tree [2020/12/13] – [より柔軟な実装] ikatakosprogramming_algorithm:data_structure:binary_indexed_tree [2020/12/13] – [より柔軟な実装] ikatakos
行 78: 行 78:
  
 ただし、Python(などインタプリタ言語)では一般的に「''a = add(a, x)''」より「''a += x''」とした方が速い。\\ ただし、Python(などインタプリタ言語)では一般的に「''a = add(a, x)''」より「''a += x''」とした方が速い。\\
-柔軟性のために演算を関数で与える関係上、前者の実装となるので、演算が単純でギリギリまで高速化を行いたい場合には向かない。+柔軟性のために演算を関数で与える関係上、前者の実装となるので、ギリギリまで高速化を行いたい場合には向かない。
  
  
行 107: 行 107:
         return s         return s
  
-    def lower_bound(self, x, lt): +</sxh>
-        """ +
-        累積和がx以上になる最小のindexと、その直前までの累積和(未検証)+
  
-        :param lt: lt(a, b) で a < b ならTrueを返す関数 +実装について補足。
-        """ +
-        total = self.idf() +
-        pos = 0 +
-        tree = self.tree +
-        func = self.func +
-        for i in range(self.depth, -1, -1): +
-            k = pos + (1 << i) +
-            new_total = func(total, tree[k]) +
-            if k <= self.size and lt(new_total, x): +
-                total = new_total +
-                pos += 1 << i +
-        return pos + 1, total +
-</sxh>+
  
-listやdictなどのオブジェクトを載せることもできる。\\+Fenwick木では、listやdictなどのオブジェクトを載せることもできる。\\
 その場合の注意点として、Pythonでは、オブジェクトを特に工夫無くコピーするとインスタンス自体が同じとなる。つまりどれか1つへの反映が他の全てに反映されてしまう。 その場合の注意点として、Pythonでは、オブジェクトを特に工夫無くコピーするとインスタンス自体が同じとなる。つまりどれか1つへの反映が他の全てに反映されてしまう。
  
programming_algorithm/data_structure/binary_indexed_tree.txt · 最終更新: 2023/02/08 by ikatakos
CC Attribution 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0