ICPC2018 国内予選 参加記
忙しかったので今更になるが、どうせなら残しておきたいので書くことにした。
2018年7月6日、ACM-ICPC 国際大学対抗プログラミングコンテスト(以下ICPC)の国内予選が行われた。
ACM-ICPC 2018 Asia Yokohama Regional
結果から述べると、弊チーム WArabimochi は5完12位で、アジア地区横浜大会に選抜された。めでたい。
国内予選結果 | ACM-ICPC 2018 Asia Yokohama Regional
チーム編成
私はICPCの参加は今回で5回目となり*1、来年からは参加権を失ってしまう。最後くらいはアジア地区予選に進出したかったため、できるだけ強い(というか実力の近い)チームを作ろうとした。
メンバー(チーム紹介より)
- 私: ねこです よろしくおねがいします
- はと: はとです バターロールが好きです
- ばぐ: ばぐです ばぐをうめます
予選まで
とりあえず模擬国内予選に参加し、5完した。ばぐ氏の goto 文が輝いていた。
当日開始前
とりあえずタイピングが一番早いであろうばぐ氏にAを任せて、自分はBを読んで解法を考えることになった。
開始後
3分弱でBの解法が思いついたところで、なんかばぐ氏がAを通してた。どうやらFAらしい。
交代してもらってBのコードを書いたが、なんかバグった。
適当に配列の中身を出力してみたところ、配列のサイズが足りないことが発覚したため、適当にめっちゃ大きく取ったらACした。
その後、Cの内容を教えてもらい、ちょっと考察したら、約数の中で条件を満たすものを求めればいいことに気が付いた。
ばぐ氏に適当に実装してもらってAC。
D問題、制約を見た瞬間に全探索を提案。ただしは厳しそうだったので、適当に枝刈りをすることにした。
私が再帰関数で実装したものの、なんかサンプルの出力すら合わない。原因を探ろうと関数内部でデバッグ出力を試みたところ、そもそも再帰呼び出しができてなかった。
原因がわからず、悩んでいたところ、はと氏からの指摘で、再帰関数呼び出しで関数名を書き忘れるというミス*2が発覚した。
適当に直してAC。
私がDを実装している間に、ばぐ氏とはと氏に問題を読んでもらっていたので、解けそうなFの実装をお願いすることにした。
彼らにFを任せつつ、私は彼らが飛ばしたE問題を読んでみることにした。
少し考えたら、精度が落ちない部分をまとめて足す方法を思いついたので、難航していたFの実装に代わって私がEを書くことに。
適当に実装して、サンプルを入力したところ、なにやら例外を吐いた。
私「浮動小数点例外ってなに?」
ばぐ氏「ゼロ除算」
思い当たる箇所があったので、修正したらなんかACした。
その後ばぐ氏とはと氏はFに取り組んでいたが、残り時間では解けなさそうだと判断したらしい。
終了時間ギリギリの時に、恒例行事としてH問題にEの解答を投げ*3、WAで終了。
終了後
学内1位だったのでまあ間違いなくアジア行けるだろうとなったので、打ち上げで無限に酒を飲んでた。
アイスワインが美味しかった。
さいごに
アジア地区大会もがんばります。よろしくお願いします。