pub trait MoState {
type Q;
type A;
const L_R_RATIO: f64 = 1f64;
// Required methods
fn query(&self, q: &Self::Q) -> Self::A;
fn insert_left(&mut self, pos: usize);
fn remove_left(&mut self, pos: usize);
// Provided methods
fn insert_right(&mut self, pos: usize) { ... }
fn remove_right(&mut self, pos: usize) { ... }
fn process(&mut self, queries: &[(usize, usize, Self::Q)]) -> Vec<Self::A> { ... }
}
Expand description
A generic implementation of Mo’s algorithm, aka Query Sqrt Decomposition. It answers q offline queries over intervals in 0..n by shifting the query interval’s endpoints by one position at a time. Each endpoint incurs a total cost of at most n * sqrt(q * L_OP * R_OP).
Provided Associated Constants§
Required Associated Types§
Required Methods§
fn query(&self, q: &Self::Q) -> Self::A
fn insert_left(&mut self, pos: usize)
fn remove_left(&mut self, pos: usize)
Provided Methods§
fn insert_right(&mut self, pos: usize)
fn remove_right(&mut self, pos: usize)
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.