Codeforces Round #704 (Div. 2)
Codeforces最高ですよね!!(手のひらクルー)
Codeforcesはレートの上がり幅大きくて嬉しいですね。その分下がり幅も激しいとのことですが…今現在のレートが992なので、次のコンテストで高パフォ叩き出せば緑が見えるかも!?って感じです。
以前の記事でCodeforcesのこと割とこき下ろしてしまいましたが、今回受けてみて印象が好転しました。
- 自分のコードをローカルで作成→アップロードして提出(めんどくさい)
⇒普通にPROBLEMSタブ右隣のSUBMIT CODEタブからコピペしたコード提出できました…ごめんなさい… - 問題文が英語かつ結構長い(DeepLさんありがとう)
⇒むしろ英語の勉強にもなりますよね!(強引) - Hackとかいう恐ろしいルール(他人のコードの不備を指摘してスコアゲット)がある
⇒恐ろしいです。でもそのうちHackしてみたい! - よく言われてるようにAtCoderと比べてそこまで数学力重視じゃない印象(手も足も出ない問題が少ない気が…?)
- ABCのように設問難易度の落差が激しくない(AtCoderだとAB問題は超簡単、D問題から手も足も出ないのに対し、CodeforcesはA→B→Cと難易度がいい感じに上がってく(気がする))
とべた褒めしてみたものの、やっぱり海外のコンテストってので平日の23:35とかに開始だときついものはありますねー。今回のように18:05開始だと嬉しいです。
さて問題の感想ですが、今回はAB問題が無事ACで、Cがプレテスト通らず時間切れでした。せっかくなのでこれから極力各問題で学んだことを纏めていきたいと思います。
A. Three swimmers
反省点としては、計算式に浮動小数点演算を含めてしまったことです。AがBで割り切れるかの判定で、普通にA%Bすりゃいいのに何を血迷ったかA//B==A/Bという判定としたことが恐らく原因で、プレテスト落ちてました。エラーの原因特定にめっちゃ時間使ってしまいました。
とは言え、プレテストで落としてくれたのはむしろ慈悲だと思います。ぬか喜びしなくてすみました。
B. Card Deck
A問題のミスでメン死してた勢いでかなりハマりました。やりたいことは頭の中で固まってるのに実装力が追いつかず、ここでもタイムロス。方針としては、デッキを前から見ていって、一回の操作の起点になったカードが持つ数字より大きい値にぶつかったら、それまでのカードを部分リストとして新デッキに加えるという操作を繰り返した後、新デッキの中に格納された部分リストを降順ソートして数字をばらして出力、で解けました。皆さんデッキを後ろから見て行ってたようで、なるほどそっちの方がスマートだなあと感心しました。てか改めて問題文見て、各カードの数字がpairwise distinctっての見落としてました。ヒヤリハット。
C. Maximum width
これも解き方はすぐにひらめいて、前後から貪欲法で挟み撃ちだなと思ったのですが、実装がミスってるのかプレテスト通らず、敢え無く時間切れでした。解説見て要復習ですね。
以上です。