ICPC 2026 国内予選 参加記
公開 2026年7月23日 最終更新
7月3日に行われたICPCの国内予選に、滋賀大学から「BiWACoder Shun」というチームの1人として出場した。
コンテスト
主に、自分が担当した部分について書く。
開始前に、それぞれどの問題にはじめに取り組むか話し合った。前回参加した時はD問題へたどり着くまでに時間がかかったのが後半に響いてしまったため、今回は3人のうち1人ははじめからD問題以降を読むことにした。また、残りの2人はA問題, B問題をそれぞれ読み、解法がまとまったらそれぞれ自身が実装することにし、自分ははじめにB問題の考察・実装を担当することになった。問題文は D, E, A, B, C の順で印刷した。
コンテスト開始後すぐにB問題を読み始めたが、正しい解法を見つけるまでに70分、デバッグに50分を費やしてしまった。開始から2時間以上が経過したところでB問題を通した。
それからは2人でD問題を考察し始めた。ノートに s がどの値の場合にどんな数列になるのかを順に書いていった。数列として面白く、規則性を見つけるなど2人で少し考察を進められたが、まとまった解法は立てられなかった。そのままコンテストは終了した。たしか、その時もう1人はE問題を実装している途中だったと思う。チームでA, B, Cの3完、209位という結果になった。
環境
前回と同様、自分のPCを当日のコーディングに使うことになった。前回も今回も、ほかの2人はいつもウェブ上のエディタを使ってコンテストに参加しているそうで、ローカルに環境は構築していないとのことだった。前回は当日にコーディング環境の説明をすることになってしまい、またコマンドの説明が伝わりづらく、コンテスト中にもどう実行すればよいかなどの質問を受けることになってしまった。そこで今回は、事前に make コマンドで必要なコマンドをまとめて実行できるように Makefile を作成することにした。 GitHub Gist に、それとともにチームメンバー向けのドキュメントを置いておき、事前に共有しておいた:ICPC用のMakefile (2026年7月3日時点の版)。とりあえず使えればよかったので、あまり適した形にはなっていないと思う。
反省
デバッグに多くの時間をとられてしまった。開始から70分程度で完全な解法がわかったものの、実装の際に配列の要素への代入部分でミスをしていたことにそこから50分以上の間、気づけなかった。これはノートに書いていた、主な処理の部分や図のみを見て考えていたことが原因で、ほかのメンバーにPCを譲る際に現在の自分のコードを印刷しておけばもっと早く気づくことができたと思う。
解法の方針を立てるために長い時間がかかってしまった。これは最近、自分が競技プログラミングから離れていたことが影響していると思う。昨年12月ごろにコンピュータサイエンスに関心を持ち、いくつか書籍を読み始め、今年5月から C++ について改めて学び始めた。はじめに『非情報系学生のための C/C++ 入門』を読み終えた。これはプログラミングの意義から始まり、GUIアプリケーションを少しだけ扱ったりしつつ、プログラミングにおける「プログラム」などの言葉の概念から変数を宣言した際のコンピュータにおけるメモリの使われ方、そしてオブジェクト指向の初歩までカバーしている、とても良い資料だった。次に『江添亮のC++入門』を読み始めた。これはまだ読んでいる途中だが、これまで何となく使っていた記法の意味や仕組みについて知ることができ、とても見通しがよくなってきている。このように、最近は多くの時間を競プロに直接的にはつながらないことに費やしていた。ICPCまでにできるだけ問題を解いておくつもりだったが、なかなか気が向かず、ほとんど解けていなかった。コンテストにもほとんど参加していなかった。これは C++ について学び始めたことでそれまであいまいな理解で使っていたことが気持ち悪くなり、ちゃんと理解を深めたところで本格的に再び競プロをしたいと考えていたからだったが、 C++ についての理解がまだ期待しているほどに深まっていないところでICPC国内予選の当日を迎えてしまった。これからも C++ について理解を深めるものの、ある程度のところでいったん足を引いて、再び競プロを始めようと思う。また、自分の AtCoder のレーティングが灰色と茶色の間で停滞しているのは明らかに数学への理解が不足していることが原因であるため、数学への理解も同時に深めていきたい。
余談
全体的にかたい書き方になってしまった。余談として、まずはチーム名について書いておく。今回のチーム名は「BiWACoder Shun」だった。過去に滋賀大学から「BiWACoder」というチームがICPCに出場ていたことがあり、これが秀逸な名前だということでこれを今回そのまま使いたいという意見が参加登録前の話し合いで出たが、過去に出場していたチームと同じチーム名なのにまったく異なるメンバーなのはあまり良くないのではないか、という意見を自分が出した。そこで、何か末尾につけることで、過去に出場していたチームとは別のチームであるということを表すことになった。「2026」や「Alt」など、いくつかの案が出たが、どれもあまりしっくりこなかった。そこで、何らかのコンピュータゲームのタイトルを参考にしてみることにした。例えば、モンスターハンターシリーズは近年の作品では「モンスターハンター」の末尾に数字でなく何らかの単語をつけた作品名を採用している。いろいろと試していくうちに、自分が特に好きな作品である『海腹川背』の続編である『海腹川背・旬』が思い浮かんだ。試しにつなげて書いてみると、良い味がある。ほかのメンバーもこれが良いだろうと賛成してくれたため、このチーム名に決まった。
競技プログラミングサークルでは実際に集まる機会がほとんどないため、こうして集まって物事に取り組むのは久しぶりだった。やはり、同じ趣味を持っている人と実際に会って話し、同じことに取り組むのはとても楽しい。コンテスト中も活発にコミュニケーションできていて良かった。それぞれの近況を話したり、お菓子を並べたりするのも楽しかった。コンテスト終了後には悔しい気持ちもあったが、まず何よりも、楽しかったという気持ちが一番に浮かんだ。このメンバーと一緒に参加できて良かったと思った。