1日目

  • えっ、マラソン開催されてたの?という状況からのスタート。
  • スタートダッシュの遅れは気にせず、まずは問題文を読んでみる。
  • ふむふむ、クロスワードか。Trie作って文字列管理したら何とかできそうな気がする。
  • 各評価関数に重みが付くのか。こういう、重みに応じて戦略を変えるような問題は大好きだ。参加しよう。
  • 各評価関数についてちょっと考えてみよう。
    1. 升の充填率:大変そう
    2. 行、列の使用率:簡単そう
    3. 対称性:狙いを定めれば簡単そう
    4. 升の重なり率:難しそう
  • というか白紙のボード出しただけで対称性は満点か。なるほど順位表で25点付近にいる人はそういうことをしてるのか。
  • これらのスコアって相関が出るんじゃないか。
    • 1と2の関係:1を稼げば2は勝手に付いてくる
    • 1と3の関係:1がそれなりでよければ両立可能。1を本気で狙えば3は乱れる。
    • 1と4の関係:トレードオフになってそう。
    • 2と3の関係:問題なく両立できる。
    • 2と4の関係:埋める文字が多く必要なので4を立てるのは厳しいかな。
    • 3と4の関係:真ん中にちょこんとクラスタを置けば両立できそう。
  • もう少し各評価関数のスコアリングについて考えてみる。
    • 充填率はクロスワードとか無視して文字置いていくだけなら0.5はとれそう。頑張っても0.6行くかなあ。
    • 使用率は簡単。重なり率以外とは常に共存できる。
    • 対称率は狙ったら簡単だけど狙わないときつい。何で対称な箇所が8つもあるんだよ。
      • 充填率が0.5のとき、適当に文字を置いたら対称率の期待値は0.06。低すぎる…。
      • これ対称率の重みってかなり大きいな。
    • 重なり率は狙ってもキツい。狙って0.5出せればいい方か?
  • 充填率とか重なり率はとりあえず置いといて、とりあえずボードの端の列、行に文字埋めて提出してみよう。
    • 多分使用率と対称率が1.0に近い(実装適当)のでスコアは50点くらいだろう。
    • ついでに対称率と重なり率狙いのも書いてみた。とはいえ、重なり率は0.5位しか出ないけど。
      • 実際のスコアは48.91。実装が適当なのでこんなもんな気もするけど予想よりちょっと低い。
      • 順位表で50点近くにいる人はそういうことをしてるんだろう。
      • というか、対称率、重なり率狙いなのがあまり効いてなさそう。
      • 重なり率は高スコアが取れないので当然の結果。
  • 今日はこの辺で終わろう。スケジュールとかは明日決めよう。