ラッキー空間空間

AtCoderブログ

Codeforces Round #601

レート爆上がりでこれは勝ち申したってなりました。

 

A問題

差の絶対値をとって5ずつ、2ずつ、1ずつとやっていく(+5-1とかは+2+2と手数が同じなので+のみ、-のみで考えて良い)。

B問題

全ての冷蔵庫には2本ずつチェーンが繋がってなければならないのでまずは輪状に冷蔵庫を繋げる。チェーンが足りなければ-1。余ったチェーンはコスト最小のところに全て繋げる。n=2のコーナーケース見逃して1WA。

C問題

pairでmapを作って例えば(1,2,3)だったら1,2に3を登録、2,3に1を登録、1,3に2を登録(pairは小さい方が前になるようにソートしておく)。それと同時に各数が出た回数をカウントしておく。次にカウントが最小(=1)の数字を探して、カウントが次に小さい(=2)の数字であってカウント最小の数字とのpairがmapに含まれているものを探す。これを1番目、2番目とするとmapから3番目の数を探せる。あとは登場済みのものを弾きながら2番目、3番目のmapを見て4番目を探す、3番目、4番目から5番目、としていく。バグりまくったので泣きながらやった。

D問題

蛇腹状に領地を分けるとRを任意の個数含んだ分け方にできるので差が0または1が最善。文字コードよくわかんないからググったけどそれでもよくわかんなかったので9ならA、Zならaに移動、それ以外は+1ってした。

E1問題

合計の約数(1以外)ずつの区間に分けて区間内の中央値であるところに持っていく。こういう系中央値なのか平均値なのかで迷いがちなのでこれからはちゃんと覚えます。終了1分前に書き終えてお願いします!って叫びながら提出したらWA出た。見直してみたらintがオーバーフローしてたのでllに直したら普通にACになって辛かった。脳死でllできるAtCoderに甘えちゃダメですね。