会津合宿2016 参加記

 というのを初めて知ったので、参加記を書きます。

Day 0

前日の夜に移動を開始した。

新千歳空港から仙台空港に行って、JR仙台駅付近のホテルに泊まった。

利久で牛タンを食べました。うますぎる。

 

Day 1

仙台から高速バスで会津若松駅に行き、そこから歩いて会津大に行きました (毎日歩いていたけどみんなバスとか使ってたんだろうか?)

たぶん4年ぶりくらいに会津大に行った。

 

コンテストは宇宙ツイッタラー氏とか会津のWF勢とかいろいろとチームでやってみたい人たちがたくさんいたけど、老害なので調子に乗らずに初心者のサポートをする感じでやろうかと思ってあえて誘わず適当なチーム決めに参加した。

会津の若い人々 (twitterをちゃんと聞くの忘れていた…) と DKK というチームを組んだ。

 

2人にA,Bを任せて僕はDのFAを狙いに行ったがムズすぎてわからない。

Bがわからんと相談され、約数列挙してGCDをその約数にするよう調整する方針を思いついたのでそれを説明したら書けそうとのことだったのでお願いした。Nが小さいのを利用しなさすぎて複雑な実装をお願いしてしまったのが完全に失敗で害悪だった。

Aも問題文の読解に苦しんでいるようだったので一緒に読んだ結果、逆に僕が誤読して指示を出してしまい害悪だった。

Cを読んだら貪欲っぽかったので2人が書いている間に詰めずにDを考えていた。いざ実装するときになって「あれ?復元割とめんどくさくない?」となって害悪だった。

Eが通されているようだったので読むと、「あれ?edgクエリいらなくね?」となる。チームメイトに相談すると「さすがにそんなわけ……」みたいな顔をされるが押し切って書くとWA。lstクエリでkを受け取った後はk個の読み込みをしなければならないのにn個読み込んでいた。はい害悪。

Dは1個辺をとって橋を列挙すればいいよ、とドヤ顔で語っていたが内心「やっべ、橋のアルゴリズムは知ってるけどライブラリ化してねえ、やっべ」となっていた。

 

結局Dは実装する時間がなく、最終的には4完15位 (オンサイトでは3位?)

初心者をサポートするとか調子に乗っていたが完全に害を撒く老害だった。

 

夜は懇親会がなくなったので @public_sate の車に乗せてもらい、曰く「宇宙一おいしいラーメン屋」に連れて行ってもらった。知らないと絶対に行かない場所にあるラーメン屋だった、最初に開拓した人やばすぎる。結論から言うと、2回替え玉した。

Day 2

5時間だと初心者と組むと結局僕が後半実装し続けるだけになり双方得しないと思ったので、経験豊富な人と組みたいと思っていたところ、@yurahuna さんがメンバーを探しているようだったので、組ませてもらった。

@yurahuna さんが誘った @ry0u_yd さんと3人でsoujirouというチームで出た。

2人にA,Bを任せて僕はDのFAを狙いに行ったが (デジャブ)

昔の模擬国内の Sinking islands を思い出して、辺を時系列にソートして0から到達できるとこをUnion-Findすればよさそうと思い、@ry0u_yd さんがAを通したところで実装をしてみるが、サンプル5で同時に複数辺が張られるケースに後から気づき焦る。 (サンプルを先に試すべき (チーム戦で余裕があるときは特に) というのはいつも反省するのに全然身につかない、いい加減学習したい)

@yurahuna さんがB書けそうとのことだったので先にやってもらうことにした。

その間 @ry0u_yd さんにCの相談も受け、1次元にしたらよくあるDPっぽいと聞く。それでよさそうだったし、解法を自分で理解しているようだったので任せて紙コーディングしてもらう。

Bが通ったのでDを書く。同時辺が出るときはそれらからなるグラフについて、すでに0とくっついているのをキューにいれて、キューから出した頂点から行ける点をさらにキューに突っ込む、みたいな実装をして軌道修正したら通った。

その後 @yurahuna さんがEができたとのことだったのでお願いしたら一瞬で通していて神だった。後で解説を聞いたがああいう手で試したらわかる系は僕は苦手なので本当に助かった。

Cの実装をお願いしている間に僕はGをさらっと読んで解けそうだったので、@yurahuna さんに式などの詳細を詰めるのをお願いして、他の問題を読んだ。このときにはIも解けてたはず。

Cが詰まったようなのでペアプロっぽくやった。デバッグ中は @yurahuna さんに交代して幾何ライブラリを写してもらったりしてた気がする。Cは結局forループでDPの最大のとこを参照するためにrepの引数を+1し忘れるみたいな典型ミスで1WAしてしまったが通った。

@yurahuna さんにGをお願いしている間に @ry0u_yd さんにIの解法を説明してお願いした。Gもサンプルが合わなくてつらそうにしていたので、2人の間を行ったり来たりしながら合間に問題を読み進めていた気がする。

Gが通った頃にはHとLが解けていたので、@yurahuna さんにどっちがいいですか?と聞いたところHがいいとのことだったのでお願いした。

Iは実装できたがREが出てしまい、再帰しすぎでスタックオーバーフローしてることに気づく。 (毎回AOJで木の問題やるたびにREしてから気付くのやめたい) @ry0u_yd さんが再帰をスタックに直すのに慣れていないようだったので、僕が書くことにして、Hと交代しながら書き進めていた。@ry0u_yd さんには新たに解けていたKの境界条件とかを詰めてもらっていた。 (これは嘘で、マンハッタン距離を勝手に正方形にしていたが実際はひし形なので45°回転が要るのを完全に忘れていた)

結局先にIが通った。Hは終了直前に実装が落ち着くも、見逃していたケースがサンプル1に含まれていることに気づいたときには終了30秒前だったので諦めて終了。

最終的には7完8位 (オンサイト1位!) になった。自分ではDとIしかコードを書かない立ち回りでいい成績だったので、当初の目的は果たした感があるしこの日は割といい老害だったと思う。

老害なのにオンサイト1位景品をもらってしまったのはさすがに申し訳なかった。

この日は懇親会があったので酒を酌み交わした。宇宙ツイッタラーX氏が酒を備蓄して富豪感を出していたが、後にグラス交換制であることに気づいたところが面白かった。

Day 3

最終日は作問側としてジャッジに回った。会場で仕込んだネタに反応して笑ってくれた人たちを観測できたのが楽しかった。問題が面白かった (多義) と言ってくれる人たちがいて本当に嬉しかったし、そういうのが聞けるとホント作問してよかったなと思う。

会場にMacの電源アダプタを忘れてしまい、ラーメンを食べているところに @public_sate に届けてもらって本当に申し訳のNASA

この日はまだ泊まって会津観光しようと思っていたので、その後鶴ヶ城を見学して東山温泉に浸かって体を癒した。温泉はわずかにオーバーフローしていた。

Day 4

帰りも仙台空港だったので、早めに仙台に移動して観光しようと思っていたが、いろいろ failed してしまい、結局仙台に着いた頃には17時近いという残念な状態に加えて雨だったので、おとなしく空港に向かって特に何もせずに帰宅した。完全に時間を無駄にしていたのでつらかった。

まとめ

AOJはサイコー!