D - Prefix K-th Max Editorial by Mitsubachi
(C++使用者向けの内容です。)
次の要件を満たすデータ構造があればこの問題を解くことができます。
- (多重)集合 $S$ に $X$ を追加する。
- $S$ の $K$ 番目の値を求める。
これらのクエリは、g++拡張によって使える tree というデータ構造を使うことで効率的に処理することができます。
このデータ構造はC++のsetの上位互換のような感覚で、(多重でない)集合において $k$ 番目の値を返すことや $k$ 未満の数が何個あるかを知ることができます。
参考記事
参考記事
実装例
(cincout高速化をしていないので1227msですが、高速化をすることで800ms以上速くなります。)
posted:
last update: