188位。しかし、評価値と温度を変えると本番4位相当が出た。
コンテスト後のツイート
AtCoder Heuristic Contest 052
— titia (@titia_til) August 23, 2025
前半は自分でコードを書いていたのですが、これは焼きなましかも? と思い、ChatGPTに焼きなましのコードを書いてもらいました。
一度ChatGPTに書かせると、その後自分で手を入れるのは難しかった……。
問題文を読んでもらい、以下をChatGPTにお願いしました。
色々考えた後、焼きなましできるのでは? と思い、ChatGPTにお願いした。
以下のようなコードを出力してもらった。
初期状態:
・各ロボットの0番目のボタン、1番目のボタンを"U"、"R"とする。
・まず、0のボタンをx=1回、1のボタンをy=1回押す。
・各ロボットの2番目~4番目のボタンを"L","D","R"とする。ここで、2番目のボタンと4番目のボタンは対を為すボタンでなくてはいけない。
・「2番目のボタンをz=1回押し、3番目のボタンを1回押し、四番目のボタンをz回押し、三番目のボタンを1回押す」というのをw回繰り返す。ただし、w回目の最後の三番目のボタンは押さない。
ここまでのボタンを押した回数が、turn=x+y+(2*z+1)*w-1回。この一連のロボットの動きでワックスがかけられていないマスがnマス残っていたとすると、 この評価値を、turn+n*100とする。
遷移:
・あるロボットの「0番目・一番目のボタン」を変更 ・あるロボットの「2番目~4番目のボタンのボタン」を変更 ・x,y,z,wを1増加、もしくは1減少させる。
この方針で1.8秒の間焼きなまし、最も評価値が良い場合を出力する。 このコードをRUSTで出力して下さい。
この後、無駄な操作を省くのと、余ったマスを適当に掃除するコードを書いてもらい提出。
その後、評価値をturn+n*5にした方が伸びると分かり、それが最終提出で188位だった。
コンテスト後、評価値はturn+nにした方が良いと気付く(これで163位相当)。さらに、それに合わせて温度も調整したところ、本番4位相当のスコアが出た。
提出コードをちょっといじれば各段にスコアが上がったので、惜しかったといえば惜しかったんだけど、今回自分でほとんど実装してないため実感が乏しい。
自力で実装しないと身にはなっていない気もするし、どうなんだろう。
ChatGPTさんはちゃんと実装してくれてたんだなぁ……。
0 件のコメント:
コメントを投稿