algorithm

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

View the Project on GitHub satashun/algorithm

:warning: cpp_src/math/EnumBasis.hpp

Code

// ABC283G
// modified noshi basis

template <class T>
V<T> enum_basis(V<T> a) {
    V<T> basis;

    for (auto e : a) {
        for (auto b : basis) chmin(e, e ^ b);
        if (e) {
            for (auto& x : basis) {
                chmin(x, x ^ e);
            }
            basis.push_back(e);
        }
    }
    return basis;
}
#line 1 "cpp_src/math/EnumBasis.hpp"
// ABC283G
// modified noshi basis

template <class T>
V<T> enum_basis(V<T> a) {
    V<T> basis;

    for (auto e : a) {
        for (auto b : basis) chmin(e, e ^ b);
        if (e) {
            for (auto& x : basis) {
                chmin(x, x ^ e);
            }
            basis.push_back(e);
        }
    }
    return basis;
}
Back to top page