Merge sort tree (静的な列の部分列に含まれる閾値以下の要素数クエリ)
(segmenttree/merge_sort_tree.hpp)
静的な列 $[A_0, \dots, A_{N - 1}]$ について,以下のクエリを処理:
-
int cntLess(int l, int r, T query)
: $[l, r)$ に含まれる query
未満の要素数を計算.
-
int cntLesseq(int l, int r, T query)
: $[l, r)$ に含まれる query
以下の要素数を計算.
-
int cntMore(int l, int r, T query)
: $[l, r)$ に含まれる query
より大きい要素数を計算.
-
int cntMoreeq(int l, int r, T query)
: $[l, r)$ に含まれる query
以上の要素数を計算.
計算量は構築 $O(N \log N)$,クエリ $O(N (\log N)^2)$,空間 $O(N \log N)$.
Example
vector<long long> ys;
merge_sort_tree<long long> tree(ys);
int ret = tree.cntLess(l, r, ylim) << '\n';
問題例
Verified with
Code
Back to top page