pub trait ExtMonoid {
    type X: Clone + PartialEq;
    type F: Clone + PartialEq;

    // Required methods
    fn id_x() -> Self::X;
    fn id_f() -> Self::F;
    fn op(x: &Self::X, y: &Self::X) -> Self::X;
    fn mapping(x: &Self::X, y: &Self::F) -> Self::X;
    fn composition(x: &Self::F, y: &Self::F) -> Self::F;
    fn aggregate(x: &Self::F, p: usize) -> Self::F;
}
Expand description

作用付きモノイド

Required Associated Types§

source

type X: Clone + PartialEq

要素のデータ型

source

type F: Clone + PartialEq

作用素のデータ型

Required Methods§

source

fn id_x() -> Self::X

要素Xの単位元を返す

source

fn id_f() -> Self::F

作用素Fの単位元を返す

source

fn op(x: &Self::X, y: &Self::X) -> Self::X

要素同士の演算

source

fn mapping(x: &Self::X, y: &Self::F) -> Self::X

要素に対する作用

source

fn composition(x: &Self::F, y: &Self::F) -> Self::F

作用素同士の演算

source

fn aggregate(x: &Self::F, p: usize) -> Self::F

作用素の集約

Implementors§

source§

impl ExtMonoid for AddMin

§

type X = isize

§

type F = isize

source§

impl ExtMonoid for AddSum

§

type X = isize

§

type F = isize

source§

impl ExtMonoid for UpdateMax

§

type X = isize

§

type F = isize

source§

impl ExtMonoid for UpdateMin

§

type X = isize

§

type F = isize

source§

impl ExtMonoid for UpdateSum

§

type X = isize

§

type F = Option<isize>

source§

impl<const MOD: usize> ExtMonoid for AffineSum<MOD>

§

type X = Modint<MOD>

§

type F = (Modint<MOD>, Modint<MOD>)

source§

impl<const MOD: usize> ExtMonoid for AffineUpdateComposite<MOD>

§

type X = (Modint<MOD>, Modint<MOD>)

§

type F = (Modint<MOD>, Modint<MOD>)