A. 贪心的换前缀即可

B. 倒序,贪心的平均拆分。

C. 构造一个环和一条+2的路。

D. 其实也就是改变两个位置的符号,枚举情况就好了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void solve() {
int n;
cin >> n;
vc<pii> p(n);
rep(i, n) cin >> p[i].fi;
rep(i, n) cin >> p[i].se;
sort(all(p));

ll res = 0;
rep(i, n) {
res += abs(p[i].fi - p[i].se);
}

vc<ll> w1, w2;
rep(i, n) {
w1.pb(p[i].fi + p[i].se - abs(p[i].fi - p[i].se));
w2.pb(-p[i].fi - p[i].se - abs(p[i].fi - p[i].se));
}

cout << res + max(*max_element(all(w1)) + *max_element(all(w2)), 0LL) << "\n";
}

E. https://codeforces.com/contest/1898/submission/233522455

贪心,可以交换 t 的顺序对变成 s 的子串。

具体的:

image-20231223153942933

F. 没补。