SuperCon2022 参加記
予選
去年は KoD と blackyuki の 2 人だけで出てて、今年は一緒に出ようってなったので出場した。
予選の問題を見ると例年と違い DP で厳密解が出るようなものだった。blackyuki が実装して提出し、無事予選を通過した。
本選数日前~当日
KoD と blackyuki が IOI で金メダルを獲る。同じ学年とは思えない。
僕は NPCA の合宿の 3 日目と本選の初日が被っていて、OB の方のお話を聞きながら開会式に参加していた。ちなみに KoD は伊計島セミナー、blackyuki は物理チャレンジに行ってて、全員忙しかった。
本選 1 日目
NPCA 合宿の Siv3D 講義を聞きながら富岳に接続。KoD は伊計島セミナーが忙しかったので 3 日目の午後から合流。blackyuki が基本的な方針を考える。
僕はヒューリスティックはほとんど初心者なので、方針は 2 人に任せて渡された cpp ファイルをコンパイルして実行したり、バグを指摘したりしていた。
本選 2 日目
基本的に 1 日目とやることは変わらず、blackyuki が実装、僕が実行してバグを指摘したりしていた。
この日、blackyuki が
ペアの個数を計算するパートが重いので、異なるビットが100個より多いようなペアは無視することにすると、 考えないといけないペアが10^4個ぐらいになって、
焼きなますときの評価関数として、各ペアについてそれを消化したときの重要度を、(100/異なるビットの数) と決めると、 割といい感じになる
という結構重要な思い付きをしてくれた。
ただ送られた実装がかなりバグっていて、この日にこの思い付きを実装したものを実行することはできなかった。
本選 3 日目
バグを直して実行すると、スコアが下のようになった。
TEAM:
KMB76
PJM_NODE:
1
PJM_MPI_PROC:
1
OMP_NUM_THREADS:
48
IS_MPI_PROGRAM:
0
random_01.in_SCORE:
41022002
random_01.in_TIME:
2.2012
random_02.in_SCORE:
49026293
random_02.in_TIME:
3.01441
random_03.in_SCORE:
43021417
random_03.in_TIME:
2.35824
random_04.in_SCORE:
46022104
random_04.in_TIME:
2.66397
random_05.in_SCORE:
46023000
random_05.in_TIME:
2.57168
random_06.in_SCORE:
46023991
random_06.in_TIME:
2.81247
random_07.in_SCORE:
46022731
random_07.in_TIME:
2.39932
random_08.in_SCORE:
44020722
random_08.in_TIME:
2.55931
random_09.in_SCORE:
43022916
random_09.in_TIME:
2.22931
random_10.in_SCORE:
2000000000
random_10.in_TIME:
2.86479
この時点で割と精度は良かったが、時々 2*10^9 (正しくない出力をしたときのスコア) が出てしまっていた。
本選 4 日目
この日の早朝から KoD が実装をしてくれていたが、実装がバグってしまいなかなか提出することができなかった。
提出締め切り 1 時間前に KoD から送られてきたコードを実行したが、スコアが全部のテストケースで 2*10^9 になってしまった。
この理由を特定しようとしたが、このあたりから計算ノードにログインしづらくなる。何度やってもエラーが出て接続ができなくなる。仕方ないのでさっきのコードを提出した。
閉会式
結局優勝は学年が 1 つ上の Citrus だった。2 連覇、本当におめでとうございます
ここで、運営の人から「KMB76 はかなり良い解っぽかったですが、60秒を超えていて惜しくも出力違反になってしまいました。」と言われる。また、時間制限を無くした場合の結果も送られてきた。
https://scrapbox.io/files/6326c784b221b3002150ff76.jpg
え…???
衝撃の事実が発覚する。制限時間を超えていなければ優勝していたのだ。そして制限時間を超えていた理由もここで分かった。どうやら焼きなましを制限時間ギリギリまでやっていたのが原因だった。ところで提出したコードは一切並列化をしてない。KoD と blackyuki 、恐ろしい。
この後、賞品抽選会をやって、僕は T シャツ、KoD はバッジ、blackyuki はマグカップを貰った。
おわりに
スケジュールの関係上バタバタした状態でやってしまったが、初めて富岳を触ることができたのは良い体験だった。
来年は絶対に優勝したい。そのためにもヒューリスティックをそろそろ勉強していかないと…