ARC064
AtCoderリニューアル後、初のARC参加となった。前回のプロコン参加が11/12のAGC007という事で、実に3週間ぶりである。
開始直前にgnupackのCygWinが動かないというトラブルが発生。()PC新調直後でWindowsにgcc,g++も入っていなかったため、急遽ノートPCで参戦した。
エラー自体はこちらの記事に紹介されているものが近かった。コンテスト終了後にPCを再起動したら正常に動いてしまったので、詳細な原因は不明。
C
隣り合う2つの和が重要そうだったので、先に和を算出してからそれぞれxと比較して、xより大きければ右隣も合わせて減らす……という手法を採った。
これでいけると確信したもののWA。しばらく考え直したところ、和の要素数n-1のまま動かすと
3 2 3 0 3
のようなケースで落ちることが分かったので、適当に前後を増やす(元の数列の前後に"0"を追加する)とACになった。
D
各文字が登場する距離(2以上)の和("abcabcbca"であればaの距離は2+4、bの距離は2、cの距離は2)の偶奇から求められそう?と思ったものの、入力例3"abcab"の時点で通らない事に気づき諦めた。
終了後解説を読んで愕然とした。終了状態に着目すれば先頭,末端文字の比較と文字列数の偶奇を調べるだけで済んだという。もう少し紙面上で考えるべきだったと後悔した。
E
パッと見でバリア間の最短距離を求めるのが難しそうと断念。
これも解説を読んで愕然とした。(当たり前といえばそうだが)中心を結べば何の事はなかった。ダイクストラ法の実装が怪しいが、十分歯が立つはずの問題だったっぽい。
結果
Aで2WAした上での1完。レート変動は1214->1209(-5)となった。終了後は1200を割る覚悟だったため、意外にも減らない印象を受けた。次回もARCで頑張りたい。
問題の傾向にはどことなくAGCに近いテクニカルな印象を受けた。writer(問題作者)さんがAGCのwriterとして何度か見覚えのある方だったので、そういう事なのかもしれない。
反省点
- しっかり紙面で考える
- 操作の終了状態に着目する