kwm_t

kwm_tのメモ

ARC120

■A - Max Add
実験してみる。
法則が見えるので提出する

■B - Uniformly Distributed
右上から左下に斜めに見た箇所が全て一致していないと駄目なことがわかる

■C - Swaps 2
足し引きが邪魔なので単純スワップにしたい。
a,b->b+1,a-1
をswap前、後の要素に+0,+1すると
a,b+1->b+1,aになるのでただのスワップになる。
なので数列Aの全てにidxを足せば良い。
これで只の転倒数を求める問題になる。
重複がある場合があるがまたぐのは非効率なのが明らかなので問題なし。

■D - Bracket Score 2
2N個からどのようにN個選んでも、
もうN個とマッチさせた対応の取れる括弧列は作れる。
構築方法はstackを使えば良い。

■E - 1D Party
めっちゃシンプルなDPになる。
解説にある通り、
ペア、ソロ、ソロ、ペア
のようにソロとソロが連続しているばあい、ペアにしてしまったほうが効率がいいので
ペアの後にはペアかソロ+ペアが並ぶ。
なのでそのようにdpを遷移させれば良い。
ただし、上の遷移だと最後にソロが余るケースが省かれているので
そこも考慮する必要がある。