NISHIO Hirokazu
[Translate]
ABC174F
F - Range Set Query
考えたこと
範囲内に色ciが存在するかどうかを対数オーダーで判定できれば間に合う
二分探索
実装
7分で実装、提出、TLE
あ、全然ダメだ、各色ごとN件につき対数オーダーで範囲内にあるかどうか判定できてもO(QNlogN)だ
改めて考察
クエリの先読み
して
二次元の片方を時間軸にする
か
それでも最悪O(QN)か
玉の色の集合を2^nのブロックごとに作る
集合は全部で2N-1個
logN回のマージで要求された区間の色の集合ができる
しかし普通にやるとマージが重くて結局O(QN)
マージが軽い
二項ヒープ
を使う?
公式解説
区間クエリといえばセグメント木だが、マージが重い
クエリの先読み
して
二次元の片方を時間軸にする
各時点での各色の「最も右の球の場所」をメンテする
これがLより大きければ、範囲内にその色がある、定数オーダー
しかしこれでもO(QN)
各色の「最も右の球の場所」を
フェニック木
に入れる
個数を数えることが範囲和で対数オーダー
なるほど、ここがポイントか
多くのものと大小比較→フェニック木
3TLE
クエリがたくさん問題
from
ABC174
ARC174F
https://hama-du-competitive.hatenablog.com/entry/2016/10/01/001418
https://twitter.com/maspy_stars/status/1290139299011129344?s=21
https://twitter.com/tktk_snsn/status/1290222202843889665?s=21
Mo's algorithm
Tweet
Related Pages
多くのものと大小比較→フェニック木
僕のatcoderの学び方(〜PAST上級)
ABC174
二項ヒープ
フェニック木
→
数え上げ
×
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
→
数え上げテクニック集
→
問題変換
×
フェニック木
×
動的計画法
×
dp_e
×
abc191
×
値域を定義域にする
×
定義域より値域が狭い関数
→
値域と定義域の交換
→
行列の半分
×
和の順序
×
期待値dp
×
dp_j
×
頻度表
×
フェニック木
×
abc194f
×
atcoder202103
→
ABC194
→
最長増加部分列
×
dilworthの定理
×
座標圧縮
×
フェニック木
×
二分探索
×
更新され二分探索できる配列
→
ABC134E
→
二次元の片方を時間軸にする
×
フェニック木
×
ABC186F
×
二次元累積和
×
長方形クエリ
→
長方形区間カウント
→
二次元の片方を時間軸にする
×
PAST2N
×
クエリの先読み
×
std::setのlower_bound
→
PAST5N
→
past5
×
past202012
×
アルゴリズム実技検定
×
past過去問練習202012
×
past5e
×
past5f
×
past5g
×
past5h
×
past5i
×
past5j
×
past5k
×
past5l
×
past5m
×
PAST5N
×
past5o
×
番兵
×
地図読み込み時に番兵をつける
×
ゴールをスタートにする
×
ゴールを一つにする
×
ダイクストラ法
×
bit_dp
×
期待値dp
×
二次元の片方を時間軸にする
×
PAST2N
→
第五回 アルゴリズム実技検定
→
PAST2N
×
二次元の片方を時間軸にする
×
座標圧縮
×
rangeaddは二つのpointadd
×
長方形クエリ
→
長方形区間add
→
第二回_アルゴリズム実技検定
×
平面走査法
×
長方形区間add
×
クエリの先読み
×
座標圧縮
×
rangeaddは二つのpointadd
→
PAST2N
→
ABC174
×
二分探索
×
最大値の最小化
×
値域と定義域の交換
×
二分探索チェックリスト
→
ABC174E
→
ABC174
→
ABC174D
→
二分ヒープ
×
二項ヒープ
→
二分ヒープの挿入が平均定数時間
→
二項ヒープ
→
フィボナッチヒープ
→
multiset
×
ABC170 E
×
heapq
×
heapq+dict
×
bisect
×
フェニック木
×
bit
×
座標圧縮
×
平衡二分木
×
RBST
×
データ構造
→
Pythonでmultiset
→
配列
×
リンクトリスト
×
フェニック木
×
セグメント木
×
平衡二分木
×
帰着する力
→
配列もリストも都合が悪い
→
二次元の片方を時間軸にする
→
平面走査法
→
データ構造
×
秋葉_拓哉
×
遅延伝搬セグメント木
×
heapq
×
フェニック木
→
セグメント木
→
abc186
×
余事象を引く
×
削除可能集合で不等号条件
×
ACL1A
×
フェニック木
×
長方形区間カウント
→
ABC186F
→
acl1
×
scc
×
dsu
×
順番を固定することで覚えるべき情報を減らす
×
ゼロフィルのリンクトリスト
×
フェニック木
×
削除可能集合で不等号条件
×
二者間の関係からより大きな構造ができる
→
ACL1A
→
ソート済み配列
×
二分探索
×
リンクトリスト
×
フェニック木
×
削除可能集合
×
不等号条件
×
問題変換
→
削除可能集合で不等号条件
→
オーバーフロー罠
×
フェニック木
×
longest_common_substring
×
編集距離
→
ABC185
→
atcoder
×
abc168
×
abc169
×
abc170
×
abc171
×
abc172
×
abc173
×
ABC174
×
abc175
×
abc176
×
abc177
×
abc178
×
abc179
×
abc180
×
abc181
×
abc182
×
abc183
→
ABC
→
aclpc_l
×
PAST4K
×
フェニック木
→
転倒数
→
第四回_アルゴリズム実技検定
×
転倒数
×
aclpc_l
×
フェニック木
→
PAST4K
→
atcoder_library_practice_contest
×
フェニック木
→
ACLPC B
→
最大流最小カット定理
×
ベクトル複素数変換
×
値域と定義域の交換
×
フェニック木
×
座標圧縮
×
桁dp
×
project_selection_problem
×
最小費用流
×
形式的べき級数
×
双対線形計画問題
→
問題変換
→
atcoder
×
atcoder_library_practice_contest
×
numba
×
cython
×
フェニック木
×
セグメント木
×
遅延伝搬セグメント木
×
接尾辞配列
×
lcp_array
×
pythonでの累乗・逆数・階乗・階乗逆数・組み合わせ
×
中国剰余定理
×
floor_sum
×
np.convolve
×
two_snuke
×
長整数が速い
×
dsu
×
unionfind
×
最大流
×
最小費用流
×
scc
×
2-sat
→
AtCoder Library
→
二分探索
×
ABC174
→
二分探索チェックリスト
→
フェニック木
→
DP Q
→
ABC170 E
×
Pythonでmultiset
×
平衡二分木
×
フェニック木
×
numba
→
RBST
→
abc170
×
heapq
×
ヒープキュー
×
セグメント木
×
フェニック木
×
座標圧縮
×
標準入出力でtle
→
ABC170 E
"
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, 5:15:33 PM
[Edit]