5完。
各問題
A - Last Letter
cout << S[N - 1] << endl;
B - Go Straight and Turn Right
現在の向きと座標を持って、愚直にシミュレートします。
C - Yamanote Line Game
ABCで初めてインタラクティブ問題解いた気がする...。
どの数が宣言済みかを保持しておいて、まだ宣言されていない数を返します。やること自体はC問題のレベルじゃないので、インタラクティブってだけでここに置かれた感じ?
D - Swap Hats
並べ方は6パターンありますが、数巡シミュレートするとそのうちの3こずつが交互に現れるだけとわかります。よって、偶数回目に現れる3パターンのうちのどれかならYesでそうでないならNoです。
E - King Bombee
制約がいかにもDPっぽくて、実際DPで解けます。
DP[K][N][2(Xの出現回数のパリティ)]
でDP[0][S][0]=1 / その他 = 0
を初期値として木上で配るDPをすればよいです。Xを通るときパリティが変わることに注意です。
F - Shortest Good Path
たとえば111なら110, 101, 011のうちから一番少なくて済むものを選べばよさそう、それを000から再帰的にやればよさそうと思って再帰を書いていたのですが、1が少ないものから順に処理する必要があるのでBFSじゃないか?と気づいたのが終了15分ほど前で、必死に実装を書き直すも間に合わず...。もったいなかった。
まとめ
先週失ったレートをあらかた取り戻したのでよしとするべきか、見えてた6完をみすみす逃してしまったことをだめとするべきか...。