20261023
VP:ARC189 (Division 2)
A - Reversi 2
注意观察,首先首位是 0,末位得相同,其余肯定是一个 $[10...01]$ 或者 $[01...10]$ 的结构,然后考虑内部的修改次数。
再次注意发现,可以直接看相等或不相等的新序列 $B_i = (A_i + A_{i+1}) \mod{2}$
新操作就等价于在 $B$ 里选择, $[10...01]$ 的部分,把两端变成 $0$。
起始的序列是全 $1$ 的
以此来考虑所需要修改的区间长度,然后乘以一个选点顺序即可,
因为,不相邻的 连续 0 列,不会产生影响
B - Minimize Sum
推式子,可以发现奇偶之间贡献是不成链的
D - Takahashi is Slime
考虑每个点往外扩展,暴力搜即可
void solve() {
ll N; rd(N);
V<ll> A(N); rd(A);
V<ll> pre(N + 1, 0);
rep(i, N) pre[i + 1] = pre[i] + A[i];
debug(A); debug(pre);
Segtree<S, op> segt(A, e());
rep(i, N) {
ll l = i, r = i + 1;
ll ans = 0;
while(1) {
target = pre[r] - pre[l];
l = segt.min_left(l, f);
r = segt.max_right(r, f);
bool ok = 0;
if(l != 0 && A[l - 1] < pre[r] - pre[l]) -- l, ok = 1;
if(r != N && A[r] < pre[r] - pre[l]) ++ r, ok = 1;
if(!ok) break;
}
wtN(pre[r] - pre[l], "");
}
}