library

This documentation is automatically generated by online-judge-tools/verification-helper

View the Project on GitHub gyouzasushi/library

:heavy_check_mark: Monoid: Affine
(algebra/monoid_affine.hpp)

Verified with

Code

#pragma once
template <class T>
struct monoid_affine {
    struct S {
        T a, b;
    };
    static S op(S f, S g) {
        return {g.a * f.a, g.a * f.b + g.b};
    }
    static S e() {
        return {T(1), T(0)};
    }
    static T eval(S f, T x) {
        return f.a * x + f.b;
    }
};
#line 2 "algebra/monoid_affine.hpp"
template <class T>
struct monoid_affine {
    struct S {
        T a, b;
    };
    static S op(S f, S g) {
        return {g.a * f.a, g.a * f.b + g.b};
    }
    static S e() {
        return {T(1), T(0)};
    }
    static T eval(S f, T x) {
        return f.a * x + f.b;
    }
};
Back to top page