NISHIO Hirokazu
[Translate]
いもす法
配列のある範囲に同じ値を加算する
A_i ← A_i + X[s \le i < e]
where s: start, e: end
このクエリがQ回行われる
素朴に実装するとO(NQ)
先に範囲の開始と終了だけを加算する
B_i ← B_i + X[i = s] - X[i=e]
その後、
累積和
を取れば同じものが得られる: O(N+Q)
A_i ← A_{i-1} + B_i
微分の形で計算しておいて最後に積分する感じ
いもす法 - いもす研 (imos laboratory)
>
累積和
のアルゴリズムを多次元,多次数に拡張したもの
累積和といもす(imos)法 - Qiita
https://maspypy.com/atcoder-参加感想-2019-02-16abc-155
atcoder
Range Add
Tweet
Related Pages
AGC049
ABC188
ABC183
累積和
abc017_3
ABC179D
ABC014C
atcoder
→
数え上げ
×
degwer
×
状態をまとめる
×
dpは全探索の高速化
×
arc059f
×
codefestival_2016_final_f
×
aoj2439
×
探索順の変更
×
大きい順に並べる
×
aoj2333
×
順列は挿入dp
×
bit_dp
×
区間は終点でソート
×
条件の言い換え
×
操作は多いが産物は少ない
×
agc013d
×
線形和への分解
×
演算順序の変更
×
ビット演算を桁ごとに分解
×
部分群
×
操作が可逆で全域→部分群
×
ラグランジュの定理
×
再帰的定義→dp
×
arc037d
×
桁dp
×
aoj0570
×
累積和
×
フェニック木
×
高速フーリエ変換
×
ntt
×
高速ゼータ変換
×
and_と_add_の畳み込み
×
二分累乗
×
agc013e
×
行列木定理
×
全域木の個数
×
lgv公式
×
非交叉経路の個数
×
小さい確率を無視する
×
二項係数の公式
×
経路数
×
45度回転
×
xとyにわける
×
カタラン数
×
包除原理
×
agc005d
×
約数系包除
×
arc064f
→
数え上げテクニック集
→
range_add_point_read
×
セグメント木
×
ABC188
×
累積和
×
増分リスト
×
range_add
→
RangeAddは二つのPointAdd
→
atcoder
×
テストは記憶の手段
×
人に教える
×
numba
×
ABC171
×
質の良い情報源の発見
×
テストの高速サイクル
×
気づきの言語化
×
ABC172C
×
経路に依存しない
×
順序のない列は多重集合
×
educational_dp_contest
×
エンジニアの学び方
×
学び方
→
僕のatcoderの学び方(〜緑)
→
アルゴリズム
×
蟻本
×
区間スケジューリング
×
二分探索木
×
unionfind
×
最短路問題
×
最小全域木
×
ユークリッドの互除法
×
ニ分探索
×
しゃくとり法
×
半分全列挙
×
座標圧縮
×
セグメント木
×
binary_lndexed_tree
×
バケット法
×
平方分割
×
ビットdp
×
bitdp
×
行列累乗
×
繰り返し二乗法
×
最大流
×
最小カット
×
二部マッチング
×
一般マッチング
×
マッチング
×
辺カバー
×
安定集合
×
点カバー
×
最小費用流
×
凸包
×
grundy数
×
強連結成分分解
×
2-sat
×
lca
×
ダブリング
×
接尾辞配列
×
sparse_table
×
rmq
×
atcoder
→
プログラミングコンテストチャレンジブック
→
アルゴリズム実技検定
×
atcoder
×
past3
×
past202005
×
past3d
×
past3e
×
past3f
×
past3g
×
past3h
×
past3i
×
past3j
×
past3k
×
past3l
×
past3m
×
past3n
×
past3o
→
第三回 アルゴリズム実技検定
→
結合則
×
累積和
×
左右から累積積
×
一つ除き積
×
sparse_table
→
Disjoint Sparse Table
→
頻度表
×
累積和
×
二次元配列の累積和
→
AGC047A
→
atcoder
×
AGC044A
×
agc044b
→
AGC044
→
時間軸反転
×
桁dp
×
AGC044
×
atcoder
→
AGC044A
→
累積和
×
動的計画法
×
ABC179D
×
abc179
→
累積和しながらDP
→
演算順序の変更
×
問題文の順にやらない
×
縦横変換
×
等差数列の和
×
atcoder
→
ABC172D
→
abc177
×
分配法則
×
行列の半分
×
積と和の交換
×
累積和
×
長整数が速い
→
ABC177C
→
atcoder
×
ABC168
×
ABC169
×
ABC170
×
ABC171
×
abc172
×
ABC173
×
abc174
×
abc175
×
abc176
×
abc177
×
abc178
×
abc179
×
abc180
×
abc181
×
ABC182
×
ABC183
→
ABC
→
累積和
×
xとyにわける
→
ABC182
→
累積和
×
単調増加
×
単調非減少
×
単調現象
→
正の数の累積和は単調増加
→
累積和
×
二次元累積話
→
abc106_d
→
逆写像テーブル
×
累積和
×
abc089
→
ABC089D
→
区間
×
累積和
×
Static Range Sum
→
任意の区間は0からの区間の差
→
atcoder
×
atcoder_library_practice_contest
×
numba
×
cython
×
フェニック木
×
セグメント木
×
遅延伝搬セグメント木
×
接尾辞配列
×
lcp_array
×
pythonでの累乗・逆数・階乗・階乗逆数・組み合わせ
×
中国剰余定理
×
floor_sum
×
np.convolve
×
two_snuke
×
長整数が速い
×
dsu
×
unionfind
×
最大流
×
最小費用流
×
scc
×
2-sat
→
AtCoder Library
→
累積和
×
各停・急行・特急
→
簡潔ビットベクトル
→
順序のない列は多重集合
×
並び替え→頻度カウント
×
頻度カウントは範囲和
×
累積和
×
二者間の関係からより大きな構造ができる
×
重なるなら同じ長さ→偶数長のブロック
×
帰着する力
→
ARC104
→
頻度カウント
×
範囲和
×
累積和
→
頻度カウントは範囲和
→
atcoder
×
vscode
×
スニペット
→
VSCode Python Snippets
→
累積和
→
DP M
→
maketrans
×
arc009
×
arc
×
atcoder
→
arc009_2
→
累積和
×
bisect
→
abc130_d
→
dp_l
×
累積和
→
DP N
→
atcoder
→
ABC173
PyPyの関数呼び出しは遅い
→
cython
×
atcoder
→
ABC162C
→
問題文の順にやらない
×
atcoder
→
ABC172C
→
座標圧縮
×
setはメモリ食い
×
numba
×
numbaに複雑な型を渡す
×
numba_bisect
×
numpy.unique
×
長方形グラフ探索
×
番兵
×
numba_np.concatenate
×
csr_matrix
×
リンクトリスト
×
mprof
×
atcoder
→
ABC168 F
→
atcoder
×
座標圧縮
×
mprof
→
setはメモリ食い
→
剰余群逆元漸化式の導出
×
numba
×
atcoder
×
ABC171
→
ABC171 F
→
atcoder
×
ABC170
×
ダイクストラ法
×
長方形グラフ探索
×
numba
×
番兵付きの一次元配列
×
line_profiler
×
デバッグプリントのコメントアウト
→
ABC170_F
→
atcoder
×
テストドリブンで変形26進法の実装
×
二進表記
×
functools
×
ABC171 F
→
ABC171
→
atcoder
×
第三回 アルゴリズム実技検定
×
エラトステネスのふるい
×
abc170_e
→
ABC170
→
二分探索
×
atcoder
→
bisect
→
itertools.accumulate
×
itertools
×
累積和
×
atcoder
→
Static Range Sum
→
メモ化
×
atcoder
→
functools.lru_cache
→
atcoder_beginner_contest
×
atcoder
→
ABC168
→
atcoder_beginner_contest
×
atcoder
×
早すぎる最適化
→
ABC169
"
Engineer's way of creating knowledge
" the English version of my book is now available on
[Engineer's way of creating knowledge]
(C)NISHIO Hirokazu / Converted from
[Scrapbox]
at
11/23/2025, 6:21:43 PM
[Edit]