AtCoder Beginner Contest 178に参加しました。ABCDE5完(25:44)で619位でした。パフォーマンスは1736でレートは1456→1493。

感想

 言い訳がましいが開始数分前にローカルのデバッグ環境が動かなくなってることに気が付き、サイト上のコードテスト環境で解かざるを得ない状況になってしまった。そんな中青パフォが取れたのでまぁ出てよかったとは言えるか。ちなみに原因はWindows UpdateによるWSL環境の破壊だった。

A - Not

 最近のA問題では最も簡単?

B - Product Max

 x,yそれぞれの端点の掛け算全パターンを試して最大値。オーバーフローにだけ注意。

C - Ubiquity

 実は一回飛ばしました。ベン図で解けるのはわかってたのですが、頭が回っておらず、一旦Dを解いて落ち着いてから戻ろうと決意。結局Dを解いた後に戻ってきたら一瞬で解けました。

D - Redistribution

 DP解法もあるようですが、私は重複組合せで解きました。ここまで数学問題ばかりで今日のセットは数学ゲーなのか?って思いながら解いてました。

E - Dist Max

 見るからに典型そう。マンハッタン距離は45度回転という定石を何度か見たことがあるもののこれまで試したことはなかったため、ググったらこちらの記事がヒット。記載内容に従って、X=x+y,Y=x-yと置き換え(これが45度回転に相当)、「(Xの最大値)-(Xの最小値)」と「(Yの最大値)-(Yの最小値)」の大きい方を求めAC。今回に関して言えば、やってることは45度回転ですが、どちらかというと数式変形のもと最大値を求めたら、結果として45度回転と同様の写像を行っていた、という感じでしょうか。

F - Contrast

 たくさん時間が残ったのにバグらせまくって結局解ききれませんでした。まぁこれに関してはローカルの環境が死んでたこともありますが、単に実力不足ですね(その後もバグらせ続けたため)。また本番中の考察に関しても不十分で、priority_queueでA及びBで重複している数値を管理するところまではOKだったのですが、ソート順をAとBの合計ではなく、重複数にしていました。ツメが甘かったですね。

反省

 ローカル環境が死んでいることに直前に気付き出るか迷いましたが、結果的にレートをあげることができたため、出てよかったかと思います。次からはちゃんと時間に余裕を持ってローカル環境の確認をしておくことと、予備の環境も用意しておきたいと思います。また不幸中の幸いで、E問題までは実装が軽い問題が多かったため、サンプルケースの確認やデバッグに時間を要したものの、さほど大きな問題にはなりませんでした。ただ今回のF問題のような、優先度付きキューや連想配列で管理する系の問題に結構苦戦することが多い気がするので、この手の問題をきちんと正確に実装できるようにしたいですね。来週以降はしばらくABCが無いようなのでおやすみしたいと思います。←ACLコンテストがあったので無いものと思ってましたが、普通に9/19(土)にABC179が開催されるようなので出ます。