Toy と帽子と ADP BE

主にプログラミングに関わる話をゆるくエモくやっていきます

MC Digital プログラミングコンテスト2022(AtCoder Heuristic Contest 008)

システス後10,185,820,181点で、358位という結果になりました。

一応、正の点数を得た参加者のうちで真ん中より上には入れたようですし、大したことができなかったにもかかわらず水パフォだったようです。

経過

例によって、Scrapboxで思考をまとめていたのでそこからのコピペです。

  • 初手
    • 全員ステイ
    • 2,041,339点
  • 得点の計算式
    • 各人の満足度の平均
    • 満足度は
      • 追い出せなかったペット1匹毎に半減していく
      • 通過可能スペースが1減る毎に0.1%くらい減少?(多分)
    • どうすればいい?
      • 通過可能スペースを多く残すことよりはペットを追い出すことを優先したほうがはるかによさそう
      • 10あったスペースが追い出すことで4にしかならないなら追い出さないほうが得だが?
        • レアケかなぁ?
  • (1.5手目)
    • 盤面をクラス化
    • intの二次元配列で持って、各座標はビットで管理
      • 0〜19が立っていたらペット、20〜29が立っていたら人、30が立っていたら壁
      • 重なりに対応できる
  • 2手目
    • 人は動かさず、周りを囲う
      • 通過可能スペースは囲いきれた場合、1になる
    • 11,117,605点
      • これで伸びるので、とにかくペットを拒絶するほうがやはりよさそう
      • まとわりつかれた場合、囲いきれないのでその人のスコアは取れない
      • ちなみに提出時点で同点の人がいなかった
        • 誰でも考えつきそうなアイデアなのにな
        • たぶん自分の実装がまずくて囲いきれてないときがあったっぽい
  • 3手目
    • 縦移動は行わず、ただ横に仕切っただけ
    • 279,015,861点
      • 伸びたなー
  • 4手目
    • 縦移動して、人の間隔を等間隔に
    • 316,488,777点
  • 5手目
    • 一番上の人は狭いスペースに閉じ込められてしまっていたので、とりあえず壁を作らないようにした
    • 337,361,052点
  • 6手目
    • 最後、ペットの少ない空間を選んで入るようにした
    • 394,072,068点
  • 7手目
    • 無駄なウェイトをなくして、極力まとわりつかれないようにした
    • 452,070,526点
  • 8手目
    • 一番上の人が何もしてないので、ペットの少ない空間に移動するようにした
    • 448,566,939点
    • ローカルではまあまあ伸びていたのに提出すると微減- - -
      • ペットを連れてきてしまうなど悪影響が出ることもある?
      • あと、別件で計算を雑にしていたため一番下の空間だけがやたら広くなってしまうバグを発見- - -
  • 9手目
    • 仕切る人が必ず4人になるように調整
      • 上記のバグ対策でとりあえず
    • 518,675,518点
      • 伸びたは伸びたけど、テストケースによってばらつきがかなり大きいのが気になる
  • 次やること
    • 全員をペットの少ない空間に移動するようにしたい
    • それなりに実装できたのだが、犬がどうにもならない

終結

seed0でこんな感じです。何も難しいことはしていません。(ていうかできなかった・・・。)

f:id:mdstoy:20220227165706g:plain

感想

期間がありすぎても、生活とか社会とかいろいろありますからずっとAHCのことばかり考えているわけにもいかず。犬対策をどうしたらいいのかわからないところでほぼ放置状態になってしまいました。

でもまあ、単純なアイデアと実装でもAHCの現環境ならまだまだ水パフォは維持できるんだよー、というところはアピールしていきたい所存です。

f:id:mdstoy:20220227170905p:plain