SlideShare a Scribd company logo

Binary indexed tree

BIT

1 of 66
Download to read offline
HCPCHCPC 勉強会勉強会 (2016/12/13)(2016/12/13)
「「Binary Indexed TreeBinary Indexed Tree」」
北海道大学情報エレクトロニクス学科
情報理工学コースB3 杉江祐哉
Binary Indexed Tree #Binary Indexed Tree #とはとは
次のことが実現できるデータ構造!
●
i が与えられたとき、
累積和 a1
+ a2
+ … + ai
を計算
● i と x が与えられたとき、ai
に x を足す
セグメント木による表現セグメント木による表現
●
これはセグメント木でも実現できる!
5 3 7 9 6 4 1 2
8 16 10 3
24 13
37
各節点は、対応する区間の和を持っている
計算クエリ計算クエリ
●
区間を完全に被覆するまで下がっていく
(例) a1
+ a2
+ … + a7
5 3 7 9 6 4 1 2
8 16 10 3
24 13
37
24 + 10 + 1 = 35 が答え!
更新クエリ更新クエリ
●
関係ある区間を更新していく
(例) a1
を 5 から 2 に変える (-3 足す)
2 3 7 9 6 4 1 2
5 16 10 3
21 13
34
緑で塗られた区間が更新される!
セグメント木の無駄なところセグメント木の無駄なところ (1)(1)
●
(s から t までの和)
= (1 から t までの和) – (1 から (s-1) までの和)
5 3 7 9 6 4 1 2
8 16 10 3
24 13
37
たとえば、「3」の情報は左と上の情報から
得られるので、おぼえる必要がない!

More Related Content

What's hot

指数時間アルゴリズム入門
指数時間アルゴリズム入門指数時間アルゴリズム入門
指数時間アルゴリズム入門Yoichi Iwata
 
プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法Takuya Akiba
 
色々なダイクストラ高速化
色々なダイクストラ高速化色々なダイクストラ高速化
色々なダイクストラ高速化yosupo
 
ダブリング
ダブリングダブリング
ダブリングsatanic
 
LCA and RMQ ~簡潔もあるよ!~
LCA and RMQ ~簡潔もあるよ!~LCA and RMQ ~簡潔もあるよ!~
LCA and RMQ ~簡潔もあるよ!~Yuma Inoue
 
最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解くshindannin
 
勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとはTakuya Akiba
 
Re永続データ構造が分からない人のためのスライド
Re永続データ構造が分からない人のためのスライドRe永続データ構造が分からない人のためのスライド
Re永続データ構造が分からない人のためのスライドMasaki Hara
 
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性Hibiki Yamashiro
 
様々な全域木問題
様々な全域木問題様々な全域木問題
様々な全域木問題tmaehara
 
AtCoder Beginner Contest 023 解説
AtCoder Beginner Contest 023 解説AtCoder Beginner Contest 023 解説
AtCoder Beginner Contest 023 解説AtCoder Inc.
 
ウェーブレット木の世界
ウェーブレット木の世界ウェーブレット木の世界
ウェーブレット木の世界Preferred Networks
 
AtCoder Regular Contest 044 解説
AtCoder Regular Contest 044 解説AtCoder Regular Contest 044 解説
AtCoder Regular Contest 044 解説AtCoder Inc.
 
AtCoder Regular Contest 031 解説
AtCoder Regular Contest 031 解説AtCoder Regular Contest 031 解説
AtCoder Regular Contest 031 解説AtCoder Inc.
 

What's hot (20)

明日使えないすごいビット演算
明日使えないすごいビット演算明日使えないすごいビット演算
明日使えないすごいビット演算
 
指数時間アルゴリズム入門
指数時間アルゴリズム入門指数時間アルゴリズム入門
指数時間アルゴリズム入門
 
プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法
 
色々なダイクストラ高速化
色々なダイクストラ高速化色々なダイクストラ高速化
色々なダイクストラ高速化
 
ダブリング
ダブリングダブリング
ダブリング
 
LCA and RMQ ~簡潔もあるよ!~
LCA and RMQ ~簡潔もあるよ!~LCA and RMQ ~簡潔もあるよ!~
LCA and RMQ ~簡潔もあるよ!~
 
最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く
 
勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは
 
abc032
abc032abc032
abc032
 
動的計画法を極める!
動的計画法を極める!動的計画法を極める!
動的計画法を極める!
 
Re永続データ構造が分からない人のためのスライド
Re永続データ構造が分からない人のためのスライドRe永続データ構造が分からない人のためのスライド
Re永続データ構造が分からない人のためのスライド
 
RMQ クエリ処理
RMQ クエリ処理RMQ クエリ処理
RMQ クエリ処理
 
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性
 
直交領域探索
直交領域探索直交領域探索
直交領域探索
 
様々な全域木問題
様々な全域木問題様々な全域木問題
様々な全域木問題
 
AtCoder Beginner Contest 023 解説
AtCoder Beginner Contest 023 解説AtCoder Beginner Contest 023 解説
AtCoder Beginner Contest 023 解説
 
ウェーブレット木の世界
ウェーブレット木の世界ウェーブレット木の世界
ウェーブレット木の世界
 
AtCoder Regular Contest 044 解説
AtCoder Regular Contest 044 解説AtCoder Regular Contest 044 解説
AtCoder Regular Contest 044 解説
 
AtCoder Regular Contest 031 解説
AtCoder Regular Contest 031 解説AtCoder Regular Contest 031 解説
AtCoder Regular Contest 031 解説
 
Abc009
Abc009Abc009
Abc009
 

Viewers also liked

Viewers also liked (20)

Meet inthemiddle
Meet inthemiddleMeet inthemiddle
Meet inthemiddle
 
全探索
全探索全探索
全探索
 
Introduction to programming
Introduction to programmingIntroduction to programming
Introduction to programming
 
会津合宿2015Day3:D問題
会津合宿2015Day3:D問題会津合宿2015Day3:D問題
会津合宿2015Day3:D問題
 
ACPC2016Day3:F問題
ACPC2016Day3:F問題ACPC2016Day3:F問題
ACPC2016Day3:F問題
 
ACPC2016Day3:D問題
ACPC2016Day3:D問題ACPC2016Day3:D問題
ACPC2016Day3:D問題
 
ACPC2016Day3:C問題
ACPC2016Day3:C問題ACPC2016Day3:C問題
ACPC2016Day3:C問題
 
ACPC2016Day3:G問題
ACPC2016Day3:G問題ACPC2016Day3:G問題
ACPC2016Day3:G問題
 
ACPC2016Day3:E問題
ACPC2016Day3:E問題ACPC2016Day3:E問題
ACPC2016Day3:E問題
 
最短経路問題 & 最小全域木
最短経路問題 & 最小全域木最短経路問題 & 最小全域木
最短経路問題 & 最小全域木
 
C pub
C pubC pub
C pub
 
Topological sort
Topological sortTopological sort
Topological sort
 
G pub
G pubG pub
G pub
 
F pub
F pubF pub
F pub
 
A pub
A pubA pub
A pub
 
二分探索をはじめからていねいに
二分探索をはじめからていねいに二分探索をはじめからていねいに
二分探索をはじめからていねいに
 
動的計画法
動的計画法動的計画法
動的計画法
 
D pub
D pubD pub
D pub
 
B pub
B pubB pub
B pub
 
E pub
E pubE pub
E pub
 

Similar to Binary indexed tree

諸学者向け!進数変換の基礎知識
諸学者向け!進数変換の基礎知識諸学者向け!進数変換の基礎知識
諸学者向け!進数変換の基礎知識Toshiyuki M
 
PHP でバイナリ変換プログラミング
PHP でバイナリ変換プログラミングPHP でバイナリ変換プログラミング
PHP でバイナリ変換プログラミングYo Ya
 
アルゴリズムイントロダクション15章 動的計画法
アルゴリズムイントロダクション15章 動的計画法アルゴリズムイントロダクション15章 動的計画法
アルゴリズムイントロダクション15章 動的計画法nitoyon
 
第12回計算機構成
第12回計算機構成第12回計算機構成
第12回計算機構成眞樹 冨澤
 
【解説】JOI 2019/2020 一次予選 最速非公式解説【競技プログラミング】
【解説】JOI 2019/2020 一次予選 最速非公式解説【競技プログラミング】【解説】JOI 2019/2020 一次予選 最速非公式解説【競技プログラミング】
【解説】JOI 2019/2020 一次予選 最速非公式解説【競技プログラミング】Proktmr
 
Casual learning machine learning with_excel_no5
Casual learning machine learning with_excel_no5Casual learning machine learning with_excel_no5
Casual learning machine learning with_excel_no5KazuhiroSato8
 
Java数値(浮動小数点)課題勉強会
Java数値(浮動小数点)課題勉強会Java数値(浮動小数点)課題勉強会
Java数値(浮動小数点)課題勉強会Tetsuya Yoshida
 
Rで実験計画法 前編
Rで実験計画法 前編Rで実験計画法 前編
Rで実験計画法 前編itoyan110
 
kagamicomput201708
kagamicomput201708kagamicomput201708
kagamicomput201708swkagami
 
【Unity道場】ゲーム制作に使う数学を学習しよう
【Unity道場】ゲーム制作に使う数学を学習しよう【Unity道場】ゲーム制作に使う数学を学習しよう
【Unity道場】ゲーム制作に使う数学を学習しようUnity Technologies Japan K.K.
 
ディジタル信号処理の課題解説 その3
ディジタル信号処理の課題解説 その3ディジタル信号処理の課題解説 その3
ディジタル信号処理の課題解説 その3noname409
 
Schönhage Strassen Algorithm
Schönhage Strassen AlgorithmSchönhage Strassen Algorithm
Schönhage Strassen Algorithmcookies 146
 
第15回 配信講義 計算科学技術特論B(2022)
第15回 配信講義 計算科学技術特論B(2022)第15回 配信講義 計算科学技術特論B(2022)
第15回 配信講義 計算科学技術特論B(2022)RCCSRENKEI
 
ディジタル信号処理 課題解説(その3) 2014年度版
ディジタル信号処理 課題解説(その3) 2014年度版ディジタル信号処理 課題解説(その3) 2014年度版
ディジタル信号処理 課題解説(その3) 2014年度版dsp_kyoto_2014
 
スパースモデリングによる多次元信号・画像復元
スパースモデリングによる多次元信号・画像復元スパースモデリングによる多次元信号・画像復元
スパースモデリングによる多次元信号・画像復元Shogo Muramatsu
 
充足可能性問題のいろいろ
充足可能性問題のいろいろ充足可能性問題のいろいろ
充足可能性問題のいろいろHiroshi Yamashita
 
DDPC 2016 予選 解説
DDPC 2016 予選 解説DDPC 2016 予選 解説
DDPC 2016 予選 解説AtCoder Inc.
 
or-10. 線形計画法を Excel で解く
or-10. 線形計画法を Excel で解くor-10. 線形計画法を Excel で解く
or-10. 線形計画法を Excel で解くkunihikokaneko1
 

Similar to Binary indexed tree (20)

計算機理論入門03
計算機理論入門03計算機理論入門03
計算機理論入門03
 
諸学者向け!進数変換の基礎知識
諸学者向け!進数変換の基礎知識諸学者向け!進数変換の基礎知識
諸学者向け!進数変換の基礎知識
 
PHP でバイナリ変換プログラミング
PHP でバイナリ変換プログラミングPHP でバイナリ変換プログラミング
PHP でバイナリ変換プログラミング
 
アルゴリズムイントロダクション15章 動的計画法
アルゴリズムイントロダクション15章 動的計画法アルゴリズムイントロダクション15章 動的計画法
アルゴリズムイントロダクション15章 動的計画法
 
第12回計算機構成
第12回計算機構成第12回計算機構成
第12回計算機構成
 
【解説】JOI 2019/2020 一次予選 最速非公式解説【競技プログラミング】
【解説】JOI 2019/2020 一次予選 最速非公式解説【競技プログラミング】【解説】JOI 2019/2020 一次予選 最速非公式解説【競技プログラミング】
【解説】JOI 2019/2020 一次予選 最速非公式解説【競技プログラミング】
 
Casual learning machine learning with_excel_no5
Casual learning machine learning with_excel_no5Casual learning machine learning with_excel_no5
Casual learning machine learning with_excel_no5
 
Java数値(浮動小数点)課題勉強会
Java数値(浮動小数点)課題勉強会Java数値(浮動小数点)課題勉強会
Java数値(浮動小数点)課題勉強会
 
Rで実験計画法 前編
Rで実験計画法 前編Rで実験計画法 前編
Rで実験計画法 前編
 
kagamicomput201708
kagamicomput201708kagamicomput201708
kagamicomput201708
 
【Unity道場】ゲーム制作に使う数学を学習しよう
【Unity道場】ゲーム制作に使う数学を学習しよう【Unity道場】ゲーム制作に使う数学を学習しよう
【Unity道場】ゲーム制作に使う数学を学習しよう
 
ディジタル信号処理の課題解説 その3
ディジタル信号処理の課題解説 その3ディジタル信号処理の課題解説 その3
ディジタル信号処理の課題解説 その3
 
Schönhage Strassen Algorithm
Schönhage Strassen AlgorithmSchönhage Strassen Algorithm
Schönhage Strassen Algorithm
 
第15回 配信講義 計算科学技術特論B(2022)
第15回 配信講義 計算科学技術特論B(2022)第15回 配信講義 計算科学技術特論B(2022)
第15回 配信講義 計算科学技術特論B(2022)
 
ディジタル信号処理 課題解説(その3) 2014年度版
ディジタル信号処理 課題解説(その3) 2014年度版ディジタル信号処理 課題解説(その3) 2014年度版
ディジタル信号処理 課題解説(その3) 2014年度版
 
スパースモデリングによる多次元信号・画像復元
スパースモデリングによる多次元信号・画像復元スパースモデリングによる多次元信号・画像復元
スパースモデリングによる多次元信号・画像復元
 
充足可能性問題のいろいろ
充足可能性問題のいろいろ充足可能性問題のいろいろ
充足可能性問題のいろいろ
 
DDPC 2016 予選 解説
DDPC 2016 予選 解説DDPC 2016 予選 解説
DDPC 2016 予選 解説
 
計算機理論入門04
計算機理論入門04計算機理論入門04
計算機理論入門04
 
or-10. 線形計画法を Excel で解く
or-10. 線形計画法を Excel で解くor-10. 線形計画法を Excel で解く
or-10. 線形計画法を Excel で解く
 

More from HCPC: 北海道大学競技プログラミングサークル

More from HCPC: 北海道大学競技プログラミングサークル (20)

写像 12 相
写像 12 相写像 12 相
写像 12 相
 
ACPC 2017 Day3 F: 掛け算は楽しい
ACPC 2017 Day3 F: 掛け算は楽しいACPC 2017 Day3 F: 掛け算は楽しい
ACPC 2017 Day3 F: 掛け算は楽しい
 
ACPC 2017 Day3 D: 優柔不断
ACPC 2017 Day3 D: 優柔不断ACPC 2017 Day3 D: 優柔不断
ACPC 2017 Day3 D: 優柔不断
 
ACPC 2019 Day3 G: Restricted DFS
ACPC 2019 Day3 G: Restricted DFSACPC 2019 Day3 G: Restricted DFS
ACPC 2019 Day3 G: Restricted DFS
 
ACPC 2019 Day3 F: 部分文字列分解
ACPC 2019 Day3 F: 部分文字列分解ACPC 2019 Day3 F: 部分文字列分解
ACPC 2019 Day3 F: 部分文字列分解
 
ACPC 2019 Day3 E: 総和の切り取り
ACPC 2019 Day3 E: 総和の切り取りACPC 2019 Day3 E: 総和の切り取り
ACPC 2019 Day3 E: 総和の切り取り
 
ACPC 2019 Day3 B: パフェ
ACPC 2019 Day3 B: パフェACPC 2019 Day3 B: パフェ
ACPC 2019 Day3 B: パフェ
 
ACPC 2019 Day3 A: 間違い探し
ACPC 2019 Day3 A: 間違い探しACPC 2019 Day3 A: 間違い探し
ACPC 2019 Day3 A: 間違い探し
 
HUPC 2019 Day2 G: 木
HUPC 2019 Day2 G: 木HUPC 2019 Day2 G: 木
HUPC 2019 Day2 G: 木
 
HUPC 2019 Day2 E: ジャム
HUPC 2019 Day2 E: ジャムHUPC 2019 Day2 E: ジャム
HUPC 2019 Day2 E: ジャム
 
HUPC 2019 Day2 H: Revenge of UMG
HUPC 2019 Day2 H: Revenge of UMGHUPC 2019 Day2 H: Revenge of UMG
HUPC 2019 Day2 H: Revenge of UMG
 
HUPC 2019 Day2 F: MOD Rush
HUPC 2019 Day2 F: MOD RushHUPC 2019 Day2 F: MOD Rush
HUPC 2019 Day2 F: MOD Rush
 
HUPC 2019 Day2 C: 串刺し
HUPC 2019 Day2 C: 串刺しHUPC 2019 Day2 C: 串刺し
HUPC 2019 Day2 C: 串刺し
 
HUPC 2019 Day1 F: グリッドの番号
HUPC 2019 Day1 F: グリッドの番号HUPC 2019 Day1 F: グリッドの番号
HUPC 2019 Day1 F: グリッドの番号
 
HUPC 2019 Day1 E: 最短経路の復元
HUPC 2019 Day1 E: 最短経路の復元HUPC 2019 Day1 E: 最短経路の復元
HUPC 2019 Day1 E: 最短経路の復元
 
HUPC 2019 Day1 D: 貪欲が最適?
HUPC 2019 Day1 D: 貪欲が最適?HUPC 2019 Day1 D: 貪欲が最適?
HUPC 2019 Day1 D: 貪欲が最適?
 
HUPC 2019 Day1 C: 短絡評価
HUPC 2019 Day1 C: 短絡評価HUPC 2019 Day1 C: 短絡評価
HUPC 2019 Day1 C: 短絡評価
 
HUPC 2019 Day1 B: 自身の 2 倍
HUPC 2019 Day1 B: 自身の 2 倍HUPC 2019 Day1 B: 自身の 2 倍
HUPC 2019 Day1 B: 自身の 2 倍
 
HUPC 2019 Day1 A: four tea
HUPC 2019 Day1 A: four teaHUPC 2019 Day1 A: four tea
HUPC 2019 Day1 A: four tea
 
Convex Hull Trick
Convex Hull TrickConvex Hull Trick
Convex Hull Trick
 

Recently uploaded

20240227 完全に理解した LT 「mise いいよ mise」 / morishin
20240227 完全に理解した LT 「mise いいよ mise」 / morishin20240227 完全に理解した LT 「mise いいよ mise」 / morishin
20240227 完全に理解した LT 「mise いいよ mise」 / morishinMakoto Mori
 
BusTimeTable by Edge Runtime - 公共交通オープンデータ最前線2024 -
BusTimeTable by Edge Runtime - 公共交通オープンデータ最前線2024 -BusTimeTable by Edge Runtime - 公共交通オープンデータ最前線2024 -
BusTimeTable by Edge Runtime - 公共交通オープンデータ最前線2024 -yuutahatano
 
00001_test_automation_portfolio_20240227
00001_test_automation_portfolio_2024022700001_test_automation_portfolio_20240227
00001_test_automation_portfolio_20240227ssuserf8ea02
 
20240227_IoTLT_vol108____kitazaki_v1.pdf
20240227_IoTLT_vol108____kitazaki_v1.pdf20240227_IoTLT_vol108____kitazaki_v1.pdf
20240227_IoTLT_vol108____kitazaki_v1.pdfAyachika Kitazaki
 
Kubernetes環境のアプリケーションバックアップソフトウェアKasten K10ご紹介
Kubernetes環境のアプリケーションバックアップソフトウェアKasten K10ご紹介Kubernetes環境のアプリケーションバックアップソフトウェアKasten K10ご紹介
Kubernetes環境のアプリケーションバックアップソフトウェアKasten K10ご紹介FumieNakayama
 
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 

Recently uploaded (6)

20240227 完全に理解した LT 「mise いいよ mise」 / morishin
20240227 完全に理解した LT 「mise いいよ mise」 / morishin20240227 完全に理解した LT 「mise いいよ mise」 / morishin
20240227 完全に理解した LT 「mise いいよ mise」 / morishin
 
BusTimeTable by Edge Runtime - 公共交通オープンデータ最前線2024 -
BusTimeTable by Edge Runtime - 公共交通オープンデータ最前線2024 -BusTimeTable by Edge Runtime - 公共交通オープンデータ最前線2024 -
BusTimeTable by Edge Runtime - 公共交通オープンデータ最前線2024 -
 
00001_test_automation_portfolio_20240227
00001_test_automation_portfolio_2024022700001_test_automation_portfolio_20240227
00001_test_automation_portfolio_20240227
 
20240227_IoTLT_vol108____kitazaki_v1.pdf
20240227_IoTLT_vol108____kitazaki_v1.pdf20240227_IoTLT_vol108____kitazaki_v1.pdf
20240227_IoTLT_vol108____kitazaki_v1.pdf
 
Kubernetes環境のアプリケーションバックアップソフトウェアKasten K10ご紹介
Kubernetes環境のアプリケーションバックアップソフトウェアKasten K10ご紹介Kubernetes環境のアプリケーションバックアップソフトウェアKasten K10ご紹介
Kubernetes環境のアプリケーションバックアップソフトウェアKasten K10ご紹介
 
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
 

Binary indexed tree