AHC045 の参加記事です。
41.377B でプレテスト 47 位でした。
上位勢とは割と異なるところもあるので筋が良いかはあやしいですが、シンプルな実装でそれなりのスコアが出るのでご参考まで。
やったこと
- 推定とグループ構築の2段階に分けてそれぞれを解く
- 推定パート
- グループ構築
考察いろいろ
どんなクエリが良いか
長さが近い辺はどちらが長いか不明であり、長さが明らかに異なる辺は逆転が起きないと仮定する。実際、事前分布の分散をもとに、近すぎる頂点は選ばないようにしている。そうすると、クエリの検出力は、クエリの応答として現れる結果の種類数とみなせる *1 。
選ぶ点の個数ごとに、どういうクエリの検出力が高いかを見ていこう。



結果としては、正三角形をたくさん連ねる形の効率が良さそうということが分かる。
なお分散が等しい場合、小さい正三角形でも大きい正三角形でも得られる情報量は変わらない。ただし標準偏差に比べ近すぎると位置の逆転が発生し良い情報が得られないので、ある程度以上離す方が良い。
クエリによる分布更新のイメージ
サンプリングと更新は以下のようなイメージ。黒の円が事前分布。下の2点を結ぶ辺が最も近い(MST に使われなかった)ことが分かった場合、1000回サンプリングして条件を満たす点が赤い点たち。そこから推定される2次元正規分布の2σ領域が赤楕円になる。

Lが小さい場合
青の楕円はクエリ前の推定域を2σ水準で表示しています。つまり約86%はこの楕円に入ることになります。楕円でなく正方形になっている場合は、まだクエリとして一度も選ばれていないため初期分布から変化していないことを示しています。
赤の楕円はクエリ後の推定域です。クエリ前に比べて小さくなっていることから、精度が上がっていることが分かります。

Lが大きい場合
点を正三角形状に順につなげています。一気に情報が得られるのでLが小さい場合に比べてターンあたりの情報量がお得です。

グループ分け
何も良い方法が思いつかなかったので焼きなましです。
評価関数を MST の長さにすると計算量がやばいので工夫しました。
高校数学で習ったあれを思い出していました。
これ:
例えば 点
の集合に点
を追加した場合の寄与は
となるので、グループごとに や
を持っておくと
で計算できます。
結果
推定結果
Lが大きいといい感じに推定できます。Seed 2 では誤差の二乗平均のルートが60弱ぐらい。
楕円(または長方形)が2σの推定域で、点が真の位置。

Lが小さいときは全然だめです。
Seed 0 は以下のような感じ。楕円がでかすぎるせいで重なって見づらいので点0~49のみを表示しています。元の長方形からほとんど変わっていないものも多いですね。。

スコア
結果はこんな感じ。
Lが大きいときは良い感じに見える。

Lが小さいときはぐちゃぐちゃ。。

クエリはかなり盤面全体を使っている感じです。
#AHC045 Seed2 19万点
— きり (@kiri8128) April 7, 2025
盤面広めにクエリを投げています pic.twitter.com/DHzyPnoJk9
*1:実際は種類数が多いことだけが良い訳ではないですが・・。