D - Glitchy Robot Editorial
by
yuyu1213
Editorial for printing
セグ木で解けます。
操作後の数列を \(B = (B_1, B_2, \dots, B_N)\) とします。各区間 \([l, r)\) に対して、
- \(\mathrm{delta} = \displaystyle\sum_{l \leq i < r} B_i\)
- \(\mathrm{maxi} = \displaystyle\max_{l \leq i \leq r} \sum_{l \leq j < i}B_j\)
- \(\mathrm{mini} = \displaystyle\min_{l \leq i \leq r} \sum_{l \leq j < i}B_j\)
を持たせると、これはモノイドを成します。
答えは
\[\max_{0 \leq i \leq N}\sum_{1 \leq j \leq i}B_j - \min_{0 \leq i \leq N}\sum_{1 \leq j \leq i}B_j+ 1\]
と表せるので、一点更新・区間積取得ができるセグメント木を用いて \(O(N\log N)\) 時間で解けました。
実装例(39 ms):https://atcoder.jp/contests/abc483/submissions/80695760
posted:
last update:
