ACM-ICPC 2017 国内予選 参加記

ACM-ICPC 国内予選に初参加しました。高専のときちょっと参加しそうになりましたが結局参加できなかったので、数年越しのなんとかです。(前回も今回も誘われたので参加系……)

Park and Ride のメンバーは @yantene と @falcon_8823 でした。経験者+初参加2人の構成でした。

結果、A、B、Cの3問を解いて107位。がんばった!

環境

メンバーが普段使っているOSがWindowsMac、Arch Linux とバラバラすぎたため、話がまとまらず大変だった。最終的に、 yanteneさんが前日に ArchInstallBattle をしていた。本番開始30分前にプリンタが使えない状態だったりしたけど、なんとかなった。あと、わたしが普段JISキーボードを使っている、残りの2人はUSキーボードを使っている、という状況でこれも大変だった。USキーボードでがんばった(今後USキーボードに乗り換えることを検討します)。nvimでJavaを書くということで落ち着いた。

本番

5行分くらいの .vimrc を打ち込む。あと簡単なJavaテンプレも用意(arukukaさんのAOJに提出されていたコードがとても参考になりました)。

1台のPCがどう使われていたかというと、A (AC) → B → C → B (AC) → C (AC) → D (WA) のようなかんじだった。

A問題

開始から20分以内くらいに提出した。自分がA問題を解く係だった。ソートして順番にみるだけだった。それよりキーボードの記号の位置があああ。

B問題

yanteneさん担当。わたし、Aを解き終わったあと、意外と的確なコメントをしていたのでは!? 残り票数と1位と2位の差をみればいい。

Javaでcharの引き算をしようとしていたところが一番大変だったと思う。

C問題

okumotoくん担当。素数みたいなやつだこれ苦手、って思った。本番前にエラストなんとかの篩が書けるのはokumotoくんだけという話をしていたのでぴったりだったと思う。前から数列をみていけばよさそう、と言っていたらすばらしく遅かった。その後ちゃんと高速化されていた。

D問題

まだ解けそうな気配がする、と思い取り組んだ。残り1時間半くらいのあいだみんなで考えていた。わたしは遅くてもとりあえず全探索しようといって、書いた。全探索 → メモ化 と王道な流れで発展したプログラムが終了5分前くらいに動いたけどバグがあった。解けなかった。JavaのBitSetを初めて使った。

終わったあと範囲でDPとか言われていたけどやはり理解できなかった。同じ範囲がぶっ叩ける場合はスコアが同じになるということは理解した。

DPじゃなくてメモ化だけでも解けたのかなあ、どうなのかなあ。

それより後ろの問題

ちょっとは眺めたけどさっぱりみたいだったので読んでいない。

感想

ずっと昔に出場したJOI予選とかに比べると緊張しなかった。共同作業もなかなかうまくできた気がする。D問題解きたかったなあ。

普段からJava競技プログラミングをしている人がひとりもいなかったので、Javaの書き方に困る、javadocの見方がわからない、など苦労が多かった。そもそもなんでjavadocが英語だったんだ。

忙しかったので付け焼刃的な練習も3日くらいしかできなかった。割にがんばった気がする。準備とかチームメンバーにおまかせだった。お世話になりました。

楽しかったです。ありがとうございました!! いまM1だけど今年が出場する最後のチャンスだったのかな??