ICPC 国内予選 2017 参加記

できるだけポエティックにならないように気を付けます…
(が自分視点で展開しており十分ポエム)。
思うところは色々ありますが今までの日々は味のあるものだったので
日記として残しておきたいと思いました。
書いたあと見直しましたが酷いです。自戒。

概要

チームSoleilとして Ut.kさんとこいしさんと一緒に
ICPC国内予選2017に参加しました。

結果は391チーム中37位で予選通過になったと思います。

新学期頃から今までのことについて振り返ります。

前前前菜

新学期・チーム編成

学校のコンピュータクラブというサークルに所属しています。
一部中の一部が競プロを楽しんでいます。

今年は競プロをやりたい! という新入生が多くて
まずはICPCで頑張りましょうか! という話になりました。

チームは3チーム出る予定でしたが
休めない実験が被った方がいたりで2チームで出ることに。

自分は

  • 2チームのうちどちらか一方が予選を通過できるように
  • 組みたいなと思った選手と自分がチームを組めるように
  • ***(アレすぎて書けない)

を満たすようにチームを組みました。

今思えばこの頃から精神がおかしかったのですが
練習の邪魔だと当時感じた選手をslackのチャンネルからkickしたりしました…。
ここに懺悔します
(彼は当日弊学のチームを応援してくださっており
大変人ができた方だなと思いました)。

練習

ABC早解きの朝練(平日毎日)を過去2年間やっていたのですが
大変不評だったので廃止することに。

火曜日と木曜日にAOJ-ICPCから問題を選んで解いてしました(ABCDを選ぶ)。
あとはyukicoderに出たりAtCoderに出たり。
自分にとって今までにないほどわいわいできており楽しかったです。
また、JAGの模擬国内予選以外にも2回チーム練習として模擬戦を実施しました。

なお、たぬたろう さんにコーチをお願いして
木曜日・模擬戦の問題の選定と模擬戦・本番の会場整備等をお願いしました。
おかげ様で選手が練習に専念できました。ありがとうございます!

5月末~本番

私事で恐縮ですが自分は持前のうつ病が悪化して実家休養することに相成りました。
模擬戦、模擬国内予選~予選当日だけ学校に戻りました。
実家からも問題を解いていましたがダウンしていたときは何もできず。

他の選手もレポートや研究が忙しかったりで参加率が減少していきました。

模擬国内予選の日、チームメンバーが揃ったので
観戦サイト用に集合写真を撮ったのですが
今年は掲載する場所がなくて残念だったです…。

当日ちょい前の自分

7月に入ってから毎日嗚咽との闘いでしたが
国内予選前日、散歩中にげーげーしてしまったので
薬局で対ストレス用胃腸薬(漢方)を買いました。
あとはカフェインの錠剤(トメルミン)を買ったりユンケルを買ったりして
当日に備えました。

あとは…神社にお参りしてました…。

当日

前前菜

夢でボロ負けする夢を見て飛び起きたあと、
再び寝てボロ勝ち(なんと10位! ありえね~)する夢を見て
げんなりしました。まだICPC終わってないんかい…。

前菜

こいしさんと連絡が取れたのでお昼ご飯はゲン担ぎにかつ丼を食べました。

その後ライブラリを印刷したり共有のお菓子・飲み物を買って会場入り。
諸事情により選手のほとんどはリハーサルを満足にこなせなかった。

リハーサル終了から本番開始までは各位好きなように過ごしていたと思います。
世間話をしたり、デレステのMVを見たり、休んでいたり。
自分は緊張でそれどころではなかったのですが、そういう人々を見て和みました。

諸注意として提出ミスに気を付けること、TLEがないことについてアナウンスしました。
実行時間がかかるプログラムに応援コールがしたいねと談笑し
Pらでペンライトを持ってこなかったことを後悔しました。
が、これは電子的な準備になってしまうのだろうか…。

本番

5分前でもサイトにアクセスできて
「(開始直前はアクセスできないようになってなかったっけ)」
「(去年はどうだったっけ)」
「(まさかこどふぉる…?)」
と思っていましたが本当に開始直前ロードが長くなり
SSレアの気配を感じてコンテスト開始。

戦略というほどでもないですが
各問題は複数人で見て解けそうな人が名乗り出て
実装する、という方針を取っています。
固定すると苦手な問題でアになったりすると思ったので…。

A問題はこいしさんが瞬間的に解法を生やして実装・AC。
B問題は難しそうに見えましたがUt.kさんが「解けます」と
一言放って華麗にAC。C問題はびっくりするほどやるだけでしたが
外側と内側のmin, maxを取るのをバグらせそう…と心配していたら
こいしさんが自信マンマンに「簡単」と言ってくれたので
お任せしました(投げっぱなしでドン引きされたような気がしますが…)。

D問題、2^500になっちゃうよなー間に合わないよなー。
このn \times m \leq 500という制約はどう活かせるのだろう、
と考えていましたがこいし君と実は状態数少ないのではないか、
という話をしたことから、直感と独断でDの純粋な幅優先解法を書きました。

サンプルは(もちろん)合ったので入力ケースをダウンロードして実行。
1秒経っても終了せず「だよねー笑」と顔を見合わせた瞬間に終了。
えっ提出するよ…? → Correct Answer(これ赤字なのでWAに見える)
んほお。

2ケース目をダウンロードして実行。
3秒経っても終了せず、あれーやっぱりダメか1ケース目弱すぎたのかな
と考えていたら終わる。
えっ提出するよ…? → Conglaturations!
チームメイト一同「はあ?!」

Eは全列挙して試しても間に合うと考えたので実装。
時間がかかり過ぎたので自明な枝刈をして
実行。
1行入力ごとに1秒程度かかって全体で192ケースほど…。
このとき終了15分前だったのでプログラムを信じて応援コールをしていました
\ハーイハーイハイハイハイハイ!/
ペンライト欲しかった…。

結果むなしくもWA。
終わった後に気づきましたが自明な枝刈をしようとして
自明なバグを埋め込んでました…。スミマセン…。

コンテスト終了。

終了後

予選通過できたようでうれしかったですが
D問題を考察せずに解けてしまったのが非常に不快でした。
終わってみれば確かに状態数は少ないのが分かったのですが…。

個人的に応援していたチームは成績が揮わなかったようで、
D問題に対するヘイトを勝手に湧かしています。
やるせない…。

今回チームメイトのおかげで良い結果を残せました。ありがとう!
チームメイトとはアジア地区を楽しめるように精進していきたいと思います。

コーチにはささやかなお礼として好きだと伺っていた
ぼのぼののぬいぐるみをプレゼントしました。

最後に、チーム戦は楽しいですね…。