hotaruの蛍雪日記

競プロとゲームをしています

CODINGAME FALL CHALLENGE 2020でレジェンドリーグに昇格した(過去問)

https://www.codingame.com/replay/509855212

コンテストのページ

ゲームAIコンテストCODINGAME FALL CHALLENGE 2020でコンテスト終了後にレジェンドリーグに昇格した。

コンテスト終了時の成績

コンテスト終了時はこんな成績だったんですがね。

全体順位:186/7,043位 🥇ゴールドリーグ🥇順位:105/477位 日本順位:54/320位

CODINGAME FALL CHALLENGE 2020に参加した(🥇ゴールドリーグ🥇・全体順位186位) - hotaruの蛍雪日記

こちらコンテスト終了時の記事です。 hotarunx.hatenablog.com

コンテスト終了後にやったこと

  1. 5か月前にコンテストが終わる
  2. 4か月前に「QCFium法のpragma」をした
  3. 2021年4月24日、レジェンドリーグに昇格する

QCFium法

QCFium法というのは競技プログラミングで使われるC++の定数倍高速化テクニック。 ソースコード内で最適化するようコンパイルオプションを指定する。 具体的には次のコードをソースコード先頭に書く(指定するオプションによって多少異なる)。 これ反則だろ。 まあQCFium法使って通ることってそんなにないか。 私はTechFulでQCFium法使ってTLE回避したことあります。 ちなみに2020年パソコン甲子園ではpragmaが禁止されQCFium法は禁止されました。

#pragma GCC target("avx2")
#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")

レジェンドに上がった原因がQCFium法かはよくわからない。 個人的にはQCFium法やってもBOTの強さ変わらないと感じたから原因ではないと思う。 うちのBOT、ゴールドリーグのボスに勝率30%くらいだったはずなんだが。

コードの改善点

  • 一番簡単な改善点としては序盤に学習する呪文の優先順位かな
    • ローカルで対戦させて買った時に覚えてた呪文の価値をつけていた人がいた
    • 呪文の価値は本番でいろいろやったが効果がでなかったなあ
  • ビームサーチやってるんだがデータの持ち方がこれでいいのかと思ってしまう
    • ノードがでかいので
  • chokudaiサーチやってみたい
  • 敵の行動よみが雑