投稿

8月, 2026の投稿を表示しています

AHC069参加記

はじめに AtCoder Heuristic Contest 069 に参加し、568位(perf1202 )でした。 今回は考えたことのメモ書き程度になりますが参加記として残しておこうと思います。 問題 https://atcoder.jp/contests/ahc069/tasks/ahc069_a 縦50x横50のグリッドがある。 グリッドには障害物がランダムに配置されている。 グリッドに指定されたサイズ・時間のマス(以下グループと呼ぶ)を割り当てる。 グループを割り当てると割り当てたグループに応じた報酬が得られる。 配置するグループは分離不可(上下左右に連結である必要がある)。またグループの形状は正方形に近いほうが高報酬。 グループの割り当ては拒否することもできる。その場合はそのグループ分の報酬は得られない。 途中でグループを再配置することが可能。ただしコストがかかる。 割り当てるグループ情報は先読み不可(インタラクティブ問題)。 得られる報酬を大きくするのが目的。 今回の取り組み方 前回は生成AI未使用でしたが、今回は生成AIを少し使用しています。使用したのは主に Gemini 3.6 Flash のブラウザチャット(無料版)です。 序盤は自分でコーディングして、生成AIはデバッグや出力結果の整理など補助的な用途で使用しました。 終盤、自分でできることが減ってきてからは 現状のコードの改善点の案を出してもらう 出してもらった改善点でコードを直してもらう いくつか入力・出力結果を与えて結果を分析してもらう(今回だと拒否すべきでないグループを拒否していないかなど) など用途を広げました(ただ、結果にはそれほどつながってません)。 解法・考えたこと もしかしたら最終提出コードに反映されてないかもしれませんが、解法と試した点を記載します。 グループ受け入れの判断 マス・時間当たりの収益で評価して、基準値以上、かつ空きがあれば受け入れるようにしました。収益の基準値については固定とはせず以下に記載する内容で変化するようにしました。 現時点の空き状況 空きが多い場合は比較的収益が低いグループも受け入れられるよう緩めに、空きが少ない場合は収益が高いグループが来た時に受け入れられない事態を避けるよう厳しめにしました。 経過ターン数 開始直後は受け入れ余力が大きく、また終了直...