A. Letter Home
左端・右端の両方を訪れればその仮定で全部訪れられています.よって $2$ 通り調べればよくなります.
B. Above the Clouds
条件を満たす $b$ で長さ $2$ 以上のものがあれば,そのうち先頭や末尾の文字を削ったものも条件を満たします.よって $|b|=1$ の場合をチェックすればよいです.
C. Those Who Are With Us
何もしない場合の max を $x$ とすると,答は $x$ または $x-1$ です.$x-1$ にできるのは現在 $x$ になっている場所すべてを decrement できるときで,それを判定します.
D. 1709
各行をソートし,そのあと各列をソートすれば条件を満たします.操作回数は $\frac{N(N-1)}{2}\times 2 + N$ 以下です.
E. Sponsor of Your Problems
単純な桁 dp で計算できます.
F. Yamakasi
Cartesian Tree を作って,max の位置ごとに計算します.
$[l,r]$ において最大値をとるインデックス $m$ という状況を考えると,$a\in [l,m]$ かつ $b\in [m,r]$ であって $X[b]-X[a]=s$ であるものを数えるというタイプの計算に帰着されます. $\min(m-l,r-m)$ の和が $O(n\log n)$ になる(木における light subtree sum なので)というのが有名です(例えば ABC282H 公式解説参照).短い方を全探索してペアの個数は二分探索などで調べます.
G. Gangsta
累積和を使って愚直 $O(N^2)$ 解法を書いて,高速化します.
$r$ を固定して $l$ に対する和を一度に計算することを考えると,$X[l]<c$ であるときような $l$ にの個数やそれらに対する $Y[l]$ の和を求めるというタイプの計算に帰着されます.
H. Ice Baby
$\dp[x]$ を,部分列の末尾が $x$ 以下 であるような列の最大長とします.「ちょうど」ではなく「以下」とすることで dp テーブルは常に単調増加になります.
遷移は次のようになります.
- $[l,r]$ の範囲に $1$ を加算
- 全体を単調増加になるようになおす
遷移の形から,$l_i,r_i$ のところで座圧してもよいことが分かります.
区間加算は遅延セグ木で処理できます.単調増加にする処理について,区間に $+1$ したあとなのでそもそもほとんど単調増加になっていて,「$r+1,r+2,\ldots$ 部分についてちょうど $\dp[r]-1$ になっている部分を $\dp[r]$ になおす」という処理だけでよいです.修正すべき範囲を遅延セグ木二分探索で求めて,その範囲をインクリメントします.