cp-documentation

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

View the Project on GitHub zawa-tin/cp-documentation

:heavy_check_mark: ABC332-F Random Update Query (a <- ap + qの処理)
(Test/AtCoder/abc332_f.test.cpp)

簡単な考察を踏むと、以下の様な処理ができれば良いことがわかる。

双対セグ木にAffineMonoidを載せると、これが楽に処理できる。

Depends on

Code

// #define PROBLEM "https://atcoder.jp/contests/abc332/tasks/abc332_f"
#define PROBLEM "https://onlinejudge.u-aizu.ac.jp/courses/lesson/2/ITP1/1/ITP1_1_A"

#include "../../Src/DataStructure/SegmentTree/DualSegmentTree.hpp"
#include "../../Src/Algebra/Monoid/AffineMonoid.hpp"

/*
 * AtCoder Beginner Contest 332 F - Random Update Query
 * https://atcoder.jp/contests/abc332/submissions/67039166
 */

#include <iostream>
#include <vector>

using namespace zawa;
#include "atcoder/modint"
using mint = atcoder::modint998244353;
void solve() {
    int N, M;
    std::cin >> N >> M;
    std::vector<Affine<mint>> init(N);
    for (int i = 0 ; i < N ; i++) {
        int A;
        std::cin >> A;
        init[i] = Affine{mint{}, mint{A}};
    }
    DualSegmentTree<AffineMonoid<mint>> seg{init};
    while (M--) {
        int L, R, X;
        std::cin >> L >> R >> X;
        L--;
        mint inv = mint::raw(R - L).inv();
        seg.operation(L, R, Affine{mint::raw(R-L-1)*inv, mint::raw(X)*inv});
    }
    for (int i = 0 ; i < N ; i++) std::cout << seg[i].b().val() << (i + 1 == N ? '\n' : ' ');
}
int main() {
#ifdef ATCODER
    std::cin.tie(nullptr);
    std::cout.tie(nullptr);
    std::ios::sync_with_stdio(false);
    solve();
#else
    std::cout << "Hello World\n";
#endif
}
Traceback (most recent call last):
  File "/opt/hostedtoolcache/Python/3.13.5/x64/lib/python3.13/site-packages/onlinejudge_verify/documentation/build.py", line 71, in _render_source_code_stat
    bundled_code = language.bundle(stat.path, basedir=basedir, options={'include_paths': [basedir]}).decode()
                   ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.13.5/x64/lib/python3.13/site-packages/onlinejudge_verify/languages/cplusplus.py", line 187, in bundle
    bundler.update(path)
    ~~~~~~~~~~~~~~^^^^^^
  File "/opt/hostedtoolcache/Python/3.13.5/x64/lib/python3.13/site-packages/onlinejudge_verify/languages/cplusplus_bundle.py", line 401, in update
    self.update(self._resolve(pathlib.Path(included), included_from=path))
                ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.13.5/x64/lib/python3.13/site-packages/onlinejudge_verify/languages/cplusplus_bundle.py", line 260, in _resolve
    raise BundleErrorAt(path, -1, "no such header")
onlinejudge_verify.languages.cplusplus_bundle.BundleErrorAt: atcoder/modint: line -1: no such header
Back to top page