2021年3月14日日曜日

AHC 001 A - Atcoder Ad

AHC001

49,567,989,183で暫定17位だった。→システス後18位だった。

焼きなましをした。遷移は上のように隣の広告に割り込むような操作とそのバリエーションを中心にしたが、広告の単純な伸縮も残した。温度はかなり高めに設定していて伸縮のほうはほぼ通るので、単に状態の多様性を生むだけの遷移になっていたと思う。

以下は効果が大きかったもの:

  • しばらく最大スコアが更新されなかったら、スコアの低い広告周辺を上の操作で無理やり変形するようなキックを入れた。
  • 近い広告は基本的にはくっついていたほうが遷移がしやすいので、得点計算の式を希望より大きいぶんにはかまわない($p_i = 1- (1- \min(1, s_i/r_i))^2$)というものにして、最後に縮めることにした。

以下、ほかの人の解法等を眺めての感想。

  • うまくいっていない部分が(スコアの低い広告という形で)特定しやすいし、その周辺をなんとかすれば問題ないだろうという想像でキックの調整を頑張っていたが、多点スタートをもう少しちゃんと考えるべきだったかも。
  • キックで$1\times1$に縮める、はなるほどと思った。自分の複雑な操作よりよほど単純で効果的に見える。
  • 最後まで配布ツールによるもの以外のビジュアライズを一切せずに結果を見て良くない部分を直すような操作を考えていたが、動画などで見てわかることも多そうだと思った。次は準備したい。
  • それっぽい変形を書いては調整を頑張るだけに時間を費やしていて、問題の性質について真剣に考えている時間が短かったな。(試すことリストを消化するだけで時間が過ぎていって、スコアもまあまあ伸びたので考えるタイミングがなかったというのはある。)順位がよかったのはたまたまだろうなと思った。