AHC055 参加記
AHC緑のKizukiと申します。先日のAHC055でパフォーマンス1702を取って青パフォを取ることができました。やったね。✌️せっかくなのでリアルタイムで考えてたことやその解法とかを残したいと思います。
問題
A - WeakpointAtCoder is a programming contest site for anyone from beginners to experts. We hold weekly programming contests online.AtCoder
全部の宝箱を腕と武器を使ってこじ開けようという問題。200個あって、それぞれの箱の中に武器があるからうまく活用してできる限り短い手数で全部あけたい。
最終解法
それぞれの宝箱を、できる限り体力が少ない状態を作るための破壊動作をする。残った分を素手で壊して、それを焼きなまししました。
考えてたこと
~19:35
とりあえず愚直に解く。武器があったら効率の良い壊し方ができる宝箱を優先して破壊。武器が無くなったらその時一番すぐに壊せる宝箱を破壊する。
スコア: 3,307,387 🤔
~20:38
武器によって、それぞれの宝箱に通る攻撃量が違い、明らかに低いものと高いものがあるので、ここの平均を取って平均以上だけ使えるようにした。スコア: 7,945,739 結構伸びた!!
~21:00
余った時間1.8sでとりあえず焼きなましして最適解を取りに行く。スコア: 8,030,301 とりあえず800万点をとれたので良い。この時点で青パフォ取れてた。
~21:38
もう詰まった。焼きなましのパラメータとか変移とか変えてみてもスコアが全く変動しない。スコア: 8,031,981 徐々に他の人たちも800万点台に乗ってきてパフォーマンスが下がってきているので、あと10万は伸ばしたいところ。
~22:28
最初の解を作る時に、武器による一発破壊から壊さない範囲でギリギリ壊すやり方を優先してみる。これが刺さった。スコア: 8135508 +10万!! とてもよい!!
~22:59
さっきのコードには焼きなましが入ってなかったので、仕組みは変えずにそのまま導入。スコア: 8198190 5万ちょい上がってfinish!
最終的なパフォーマンスは1701で青色でした。
感想
ベースとなる方針でよりよくなる最適方法を最後の最後で導き出せたのでよかったです。上位解法はDAGで考えるらしいんですが、そっちの方向も1割考えたけどわかりませんでした。
コード自体の実装は途中からGPT-5-thinkingに頑張ってもらいました。もっと自分で素早く書けるように精進していきたい。