SuperCon2017
優勝した!楽しかった!
問題説明
音楽の生データが与えられる。
0と1に圧縮する。
なんか平均をとる。
元のデータも平均をとる。
誤差が小さいと勝ち!
詳しくはSuperConのホームページに載ってます。
1日目
・問題を見た。大体の方針(ベクトル化焼きなまし法)を立てた。
・実装をした。貪欲にやる部分は相方にまかせた。
・最大値を決定するために3分探索を組んだ。
・それを焼きなますコードを書いた。
・gnuplotで方針あってそうなのを確認した。(gnuplotとは、みんなに配布される、グラフをプロットするアプリで、excelの折れ線グラフを早く書くみたいなものだと思ってください。)
・時間は20時までと決まっていたが、周りは20時になる前に帰っていた。
・僕たちが20時に帰って、夕食をとるためにホテル近くの空港に向かったところ、大体のレストランが閉まっていた。しまった。結局そばと丼を食べた
2日目
・1日目にやったことのベクトル化をしようとした。
・そしたら内側の小さな11回のループの方がベクトル化されてしまって早くならなかった。
・仕方がないので†人力ループ展開†をした。
・これは初日だったかもしれませんが、supercon主催の先生が僕の本気のと同じぐらい良い値を「何もしないで」出せると全体に対する掲示板に書いていて、非常にビビった。(結局先生は1桁間違えていたのだが。
・でも、gnuplotでプロットしても、10倍もいい値を出せるとはとても思えないので、大いに困惑した。
・このあたりからいろんなパラメータの調整が始まった。
3日目
・焼きなましのバグを発見、修正した。誤差が2/3ぐらいによくなった。
・パラメータの調整をエクセル使ってひたすらやった。
・いろんな謎ヒューリスティックスを入れたらよくなった。
4日目
・焼きなまし法の乱数を思ったよりも大きくしたらすごく(10%ぐらい)値が良くなった。
・競技が終了した。
・他チームといろいろ話した。(これは0bitの情報です)
最終日
・なんか優勝した。びっくりした。
おわり