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

rerooting_monoid

コンセプト · 全方位木dp

template <class M, class W, class U>
concept rerooting_monoid =
    monoid<M> && requires(const rerooting_key_t<M> &k, const typename M::value_type &s, const W &w, const U &u) {
        { M::f(k, w) } -> std::convertible_to<typename M::value_type>;
        { M::g(s, u) } -> std::convertible_to<rerooting_key_t<M>>;
    };

概要

全方位木dp用モノイドの要件

集約型 value_type 上のモノイド(単位元 id・子の集約 op)に加えて、 辺を通す変換 f(確定値, 辺重み) -> 集約値 と、頂点で確定する変換 g(集約値, 頂点データ) -> 確定値 を持つこと。確定値型は key_type (省略時 value_type)。f / g は関数テンプレートでも非テンプレートでもよい。

テンプレートパラメータ

名前 説明
M 判定対象のモノイド
W 辺重みの型
U 頂点データの型

計算量

関連項目