ACM-ICPC 2014 アジア地区予選東京大会 参加記

オリセンで開かれたICPCアジア地区予選に参加してきました.アジア地区予選に出場するのは個人でも学校でも初の経験でした.
結果は4完29位(大学別24位)でした.29位だったのでリクルートさんからNiku Awardをいただきましたありがとうございます.

チーム編成

  • 僕(よわいソルバ)
  • たこくん(ソルバ)
  • マスコット(vimrc,テンプレート打ち込み,目diff,お茶くみ)

大体の流れ

開始前

前日からわかっていたことだが,周りが強豪ばっかでこわい.向かいがkatou(東工大),斜め前がprimasta(京大),右隣がnekonyaso(筑波),右斜め後ろがUTouto@Kyoto(東大)とかどんないやがらせですか...本番中みじめになる予感しかしない.

開始~AB解くまで

マスコットにvimrcとテンプレートを打ち込んでもらう.たこくんと一緒にA問題を読み,方針の確認.どうやら,前の方から詰めていくだけっぽい.たこくんに書いてもらうことにし,僕はB問題を読み始める...紙って配られないの?

B問題は構文解析しないといけない可能性も考えたが,左側から順番に計算する方法は単純なループで計算でき,掛け算を優先する方法は先に掛け算記号の処理をすればいい.結局その方針で解くことに.

A問題をたこくんがサブミット→WA.ちょっと時間がかかりそうだったので印刷して代わってもらう.Bを実装し提出,AC.たこくんが条件のミスを発見.訂正し提出→AC.

FとCを解くまで

AB正解したので僕はCを読み,たこくんには後ろの方からざっくりと問題を読んでもらうように指示を出す.
ここでC問題の読み間違えが起こり,依存関係が入口に遠い方から,入口に近い方にしかない(c < d)という条件を忘れてしまう(僕のミス1回目).「他のチームがいっぱい解いているのに,こんなに難しいの?」とか思ってた.ここでだいぶ時間を使ってしまう.

スコアボードを確認すると,Fを解いているチームが結構ある.詰まってしまったのでFを読んでみる.グラフっぽい問題,クラスカル+橋の列挙でいけるなぁと思い,たこくんにライブラリの打ち込みを頼む.(僕のミス2回目.マスコットにやってもらうべきだった)

たこくんがライブラリの入力を終了し,実装に移る.ここでふと気が付く.
「この二辺連結成分のライブラリ...どうやって使うんだっけ?」
幸い,うろ覚えの使い方でよかったのだが,ここで一気に混乱してしまい,実装がうまく進まない.
一端PCから離れて考え直したり,冷静になろうと思ってペットボトルで頭を殴ったりしてた.
ぐだぐだ悩みながら実装を行い,何とかAC.この段階でC問題を他のチームがかなり解いてる.

やっぱりCって簡単なんだよなーと思い,問題を読み直す.しばらくして,c < dの条件に気が付く.なんだC問題簡単じゃん→実装→AC.

後でコーチに聞いた話だと,Cを飛ばしてFを解き最下位争いをしている僕らのチームが一瞬取り上げられたらしい.

終わりまで

「軽食食ってきまーす.」と言って問題とともに去る.Gを解いているところが結構あったので,Gの解法を考えてみる.なんだかSegment Tree使いそうな気配がビンビンする.でもよくわからないなぁとか思ってた.
階乗に戻ると,たこくんがD問題をやっている.いろいろ質問されたが,変なことを言ってしまう(僕のミス3回目).ここでちゃんと対応していれば,5完できていたのですごく失敗だったと思う.
終了間際に,たこくんがDの実装を完了し,提出→WA.これは直せないかなーと思いながらも最後まであがくがACできず.

反省

初の参加で,かつ,全員開催日前後に何らかのタスクを抱えていて練習できてなかったのがつらかった.
そして,僕のワンマンチームだとずっと思い込んでいたのが失敗だった.たこくんをもっと有効活用してあげられたらもっと上を狙えたのかなぁと.完全に采配ミス.

目標の4完は達成できたのでよかった.しかし,順位では下から数えた方が圧倒的に早いので悔しい.
唯一の救いはリクルートさんがNiku Awardをくれたこと.

僕のわがままに付き合ってくれた,たこくん,マスコット(あおこ)さん,先生,ありがとうございました.肉がもらえるらしいので許してください.

来年からは,九大から参加することになる予定なので,足を引っ張らないように頑張りたいと思います.それまでにいっぱい練習しておかないと.