algo — C++23 日本語リファレンス GitHub

WaveletMatrixCore

クラス · ウェーブレット行列の共通コア(各 level のビットベクトル型を差し替え可能にする)

template <class BitVector, class T, int L>
struct WaveletMatrixCore;

概要

ウェーブレット行列の共通コア(各 level のビットベクトル型を差し替え可能にする)

メンバ関数

名前 説明 計算量
rank — —
kth_smallest — —
kth_largest — —
range_freq — —
prev_value — —
next_value — —

メンバの詳細

rank

// (1)
int rank(int r, T x) const;

// (2)
int rank(int l, int r, T x) const;

(1)

count i s.t. (0 <= i < r) && v[i] == x

(2)

count i s.t. (l <= i < r) && v[i] == x

kth_smallest

T kth_smallest(int l, int r, int k) const;

k-th smallest number in v[l … r-1]

kth_largest

T kth_largest(int l, int r, int k) const;

k-th largest number in v[l … r-1]

range_freq

// (1)
int range_freq(int l, int r, T upper) const;

// (2)
int range_freq(int l, int r, T lower, T upper) const;

(1)

count i s.t. (l <= i < r) && (v[i] < upper)

(2)

count i s.t. (l <= i < r) && (lower <= v[i] < upper)

prev_value

T prev_value(int l, int r, T upper) const;

max v[i] s.t. (l <= i < r) && (v[i] < upper)

next_value

T next_value(int l, int r, T lower) const;

min v[i] s.t. (l <= i < r) && (lower <= v[i])