AHC011に参加しました
173位でした。
暫定172位 23M
— naga (@naga_swe) 2022年6月5日
1. ランダム2点swap山登りで木を構築
2. スライドパズルを2行残して解く
3. ランダム移動山登り
残した2行も解けそうだと思ったんだけど、間に合わず。うまい実装方法がわからなかった。#AHC011
jjjjjjjtgpptmjjさんのAtCoder Heuristic Contest 011での成績:173位
— naga (@naga_swe) 2022年6月7日
パフォーマンス:1691相当
レーティング:1599→1629 (+30) #AHC011
ヒューリスティック青になりました! pic.twitter.com/FKd0deuTZ1
gitのコミットを見て時系列で振り返っていきます。
5/28(1日目)
問題文を読む。グリッドで操作も簡単な好みな問題だと感じ、力を入れて参加することを決意。
コミットを読むに、タイルクラスを追加したり、ジャッジを実装してた。 深夜まで実装してます、この人。
5/29(2日目)
ツイートにも履歴がないため何もしてないですね。昼まで寝てた気がします。移動が多かったかな?
5/30(3日目)
コンビニでサラダを買ったが、箸がないため食べられない、をやってる
— naga (@naga_swe) 2022年5月30日
だそうです。
5/31(4日目)
腰痛めました、現場からは以上です
— naga (@naga_swe) 2022年5月31日
かわいそう。でも腰が痛いのに取り組んでますね、えらい。
仕事の後にAHCに取り組み中・・・
— naga (@naga_swe) 2022年5月31日
この日の夜は、最終状態を何かしらの方法で探したいと思っていました。 dfsで探そうとしたんですが、何を思ったのか、一本道を構成するdfsを書いていました。疲れていたんでしょうね。「dfs ダメ」と残したままmasterブランチを捨てています。
6/1(5日目)
通勤電車の中で考察してました。
AHC、脳内考察中…
— naga (@naga_swe) 2022年5月31日
前日に謎のDFSを書いていた私ですが、朝になって冷静になり、みんなのseed=0の共有画像を見比べながら、多様だしランダムにやっても意外と枝刈りのおかげで木ができるんじゃないか?と妄想してました。
夜になったので実装しようとします
帰ったらAHCの実装するぜ
— naga (@naga_swe) 2022年6月1日
6/2(6日目)
何もできずに寝落ちしてたぜ
— naga (@naga_swe) 2022年6月1日
寝落ちしたそうです。大変そうですね。
仕事の後は空を眺めてました。
空、青すぎ。 pic.twitter.com/j99SublsPS
— naga (@naga_swe) 2022年6月2日
この日も疲れて何もできてなさそうです。
帰ってAHCやろうとしたけどビジュアライザ見ながらうんうん唸ってたら寝る時間になった
— naga (@naga_swe) 2022年6月2日
6/3(7日目)
この日も仕事です。
6/4(8日目)
土曜日なのでお休みです。お昼ごろから取り組みます。
AHC、鋭意実装中・・・
— naga (@naga_swe) 2022年6月4日
ねてたそうです
寝てた・・・?
— naga (@naga_swe) 2022年6月4日
頑張ってください
実装します
— naga (@naga_swe) 2022年6月4日
残り2日しかないので頑張って実装します。
木の構築
まずは2点swapの山登りで木を構築しました。 それなりに強めの枝刈りを入れると100 msくらいで見つかったりもするみたいです。運が悪いと1.5 secでも見つからなかったりしますが、諦めました。
行ごとに揃える
右の2列と下の2行以外を揃えるコードを書きました。動かしていいところがこれだけあると直感的な操作でマスを自在に動かせることを確認しました。
残ったところは山登りして、この時点で1.9M。結構いい。
うおー pic.twitter.com/b8Nk4i1qEi
— naga (@naga_swe) 2022年6月4日
6/5(9日目)
よく考えると最右端を残して揃えられるんじゃ?と思い実装したらできました。
列ごとに揃えていくと、最後2行は残ってしまうので、やっぱり手軽なランダム山登り。2.3Mに伸びました。
うおおー pic.twitter.com/6zLXAx8q4z
— naga (@naga_swe) 2022年6月4日
この後はREが起きたときにファイルに出力するようにしてデバッグを早くしてました。本当は最後の2行も解くための方法は思いついていたんですが、実装が重すぎて間に合わず。
皆さんの解法を見て、ビームサーチやchokudaiサーチも試してみたい気持ちになってます。
これが最終解答の動画です。
Sliding Tree Puzzleのseed=0で485714点を獲得!!!https://t.co/bfK37oSp51
— naga (@naga_swe) 2022年6月5日
#AHC011 #visualizer pic.twitter.com/qmjs7oEliB
最後に
前回のマラソンの解説放送のときにwataさんが天才発想を披露していて、そんなの問題固有の話じゃ・・・とか思っていた私ですが、そのときの話を応用して今回楽しめたので、意外とこういうアドホックな部分が大事なんだろうなー思ったりしました。アドホックをアドホックとして終わらせないというか・・・
前回のAHC010の解説放送でwataさんが「手動でランダムにやってもうまくいかなそう -> 何かいい構造を見つける」みたいなのを真似して、今回も手動でたくさん遊んだらランダムでうまくいかないのはよくわかり、でも最終状態をみながらだと解けるので、方針が決まった感じだった
— naga (@naga_swe) 2022年6月5日
いかがでしたか?マラソンは楽しいので、みんなもやろう!