2025年8月24日日曜日

AtCoder Heuristic Contest 052

 188位。しかし、評価値と温度を変えると本番4位相当が出た。

コンテスト後のツイート

 色々考えた後、焼きなましできるのでは? と思い、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 件のコメント:

コメントを投稿