TCO Marathon Round 1 (2)

Coding Phase ようやく終わったー。
今のところ3位だけど、同じデータに対して毎回0.5%くらい差が出るような解法してるから最終的にどうなるか不明。
Forumで他の人の戦略が見れてかなり参考になる。
結構自分と同じようなことをしている人が多くて安心した。


以下、自分の立てた戦略


思いついたのを全部実装したら400行近くあるカオスなソースコードになってしまったorz


どのサービスを何個配置するかと、どこに配置するかを同時に決めるいい方法が思いつかなかったので、ひとまず重要度とコストでテキトーに重みを付けてランダムにサービスの個数を決め、それらをランダムに配置して山登りっぽく移動させることに。
最初に、同じサービスの一番近くにある点と反対の方向に移動、重心が中心から結構ずれてたら全体を平行移動などによってテキトーに移動させて、あとの移動回数を少なくする。
ランダムに近くの点に移動させてスコアが更新されなければ戻すっていうのを繰り返すんだけど、スコアの計算にかなりの時間がかかるので、本来の101x101マスではなく、10x10マスで大体のスコアを高速に求める。
ここまでを10秒くらい繰り返す。
10x10だけだと不安なのでベスト10を記憶しておいて今度は25x25でもうちょい精度よく動かす。
いろいろ実験した結果、何個配置するかがけっこう重要なことが分かったので、今までのベスト2のサービス割り当てでもう一回同じことを繰り返す。
最後に101x101で動かして終了。


でも10x10で動かして一番いいスコアのを提出っていうのだけで99.5くらい来たから上の戦略の大部分はいらないっぽいorz