ICPC 国内予選 2025 参加記

 今年もICPC 国内予選に参加しました. ちーむ B1ueRose で参加し, 21位でYokohamaにいけそう ! わーい.

昨年の反省を生かしてなるべく早く投稿することに決めました. 当日中に書こうと思っていたのですが既に12時をまわっており... 

 

もくじ

  • ちーむの紹介
  • コンテストまで
  • コンテスト直前
  • コンテスト
  • まとめなど

 

ちーむの紹介

全員B4です. ごめんなさい, 頭が動かず雑です. みんなすごい人です. 敬称略.

harel : 天才ができる. 

mamime : 典型の処理ができる. 

syndrome : ヒューリスティックが好き. 重実装に耐性がある.

かなりバランスのいいちーむなのではないかと思っています.

 

コンテストまで

三回ほど集まって過去問を解いたりばちゃを走ったりしました. 簡単なはずの問題が解けない, バグが取れないなど様々なハプニングがあり少し焦ったりしました. 一方で, 順当にいけば国内予選は突破できるのでは..?という気持ちになれました.

 

コンテスト直前

お菓子をいっぱい持ち寄りました. 各ちーむに分配しているうちにコンテストがはじまりそうになります.

 

コンテスト

問題の誤読, アルゴリズムのミス, バグなどが怖いので一問に最低二人は関わるようにします. A, B, Cまでは二人ペアで解き, それ以降は三人で同じ問題に取り組みます.

Dはharelさんが矛盾しない条件を洗い出し, 正しそうなので実装->AC

Eもharelさんが生み出したアルゴリズムを少し改変するとN回程度 単一始点最短経路問題を解けばよいことになりよさそう,実装->AC

ここで順位表をみると13位!!! 例年どおりだとEまで通せれば国内予選は突破できそうなので, お菓子パーティーをしよう!!!...と大量のお菓子の誘惑に負けかけましたが, 正気を取り戻してFにすすみます.

aaa...abbb...bの形になっていれば後ろから決められることに気づき, 実装->AC

ここでかなりのちーむがE, Fを通していることに気が付きます. お菓子パーティーしなくてよかった.

Gは幾何っぽい見た目でかなり解ける見込みがないように見えたのですが, 考察をすすめるうちに何とかなりそうな雰囲気が漂いそのままACできました.

Hは考察をしているうちに場合分けが無限に発生しあきらめました...

 

まとめなど

コンテスト全体を通して20位前後をキープでき, かなり上出来でした.

また, 私個人の話ですが, 楽でバグを生まない実装方針の選択, バグの対処など実装周りの能力がかなり向上したのを感じました. 昨年のYokohamaでは2問実装をバグらせて終了し悔しい思いをしたので, 今年のYokohamaでは爆速実装ができるよう, 半年精進します. がんばるぞー.

ICPC国内予選の参加を様々な形で支えてくださった方々, 本当にありがとうございました. 引き続きB1ueRoseをよろしくお願いします.

ICPC yokohama Reigional 2024 参加記

ICPC yokohama Reigional 2024にチームSazanka で参加しました!

既に1か月以上経過してしまいましたが、せっかくなので参加記を書きます。

はじめに

書く?書かない?と迷っている間に1か月経ちました....。早く書くべきでした。

チーム紹介

横国競技プログラミングサークルから参加しました。毎年チーム分けコンテストの結果でチームを組んでいます。

Rogi先輩が最後のICPCということもあり、playoffまで行くことを目標に参加しました。

コンテスト

開始と同時にA,Bをharelさんが、Rogiさんが後ろから順に、私がCから順に読みます。とにかく完数を最大化することを意識して、解ける問題を落とさないようにします。

harelさんがAを通してBを実装している段階で、私はCとDを交互に睨み続け、残りをRogiさんが読んでくださいました。Eは構文解析、IはMo、Kはゼータ変換でいけそうですねーという話になり、かなりよいペースで考察が進んでいてうれしくなります。そんな中、Bが書き終わり提出したのですがWAが出ます。

コードを見てもバグの箇所がわからず、Rogiさんが思い切って全部書き直しをします。...->AC!さらに、書き直している間にCが最短経路木を作ればよいことに気づいてこれもAC!!

続いてKの実装をRogiさんにおまかせし、harelさんにGを読んでもらいます。私はJをどうにか解けそうな形に落とし込むべく工夫していましたが一向に進みませんでした。一方harelさんがGの大体正解のようなアルゴリズムを発見していました。わかったはいいけど実装が重すぎる...Kも難なくACし、Iを書くかGを書くか迷いますが、Gがとてもパッとかけるような内容ではなさそうなので、交代して私がIを書きます。初めて使うライブラリということもあり戸惑いましたがしっかりとAC。harelさんにGをおまかせします。

ここから進捗がない時間がたくさん過ぎました。Gのコードも複雑化し、先にEを書いてしまったほうがよさそうだったので途中でRogiさんに交代しACします。

ここで、Fをあまり見ていないことに気が付きます。んー、、なんかヒューリスティックしたくなるなー、、、

私 Rogiさん、これ絶対やまのぼりできるはずです!

Rogiさん いまこそその時ですよ!やっちゃいましょう!!

そんな会話をしたことを覚えています。もう少し考えると、面を固定して3分探索の中身で3分探索をするやつのほうが実装が楽そうという話になり、少しの間PCを貸してもらって実装します。しかし、全然違う出力が返ってきます。harelさんにPCをお返しし、デバッグを進めますが、結局解けず終了...

結果

6完で31位でした。全力でやりきれた満足感と、playoffには到底いけなさそうな結果のくやしさとで複雑でした。

反省

反省した点が2点あります。(私個人の反省になります)

ひとつは、コーディング速度含めた実装力の低さです。本番は普段使っているJIS配列のキーボードではなく、US配列のキーボードを使わなければなりません。1か月前ほどから練習をしたのですが、甘すぎました。また、普段のコーディングも早く書くことを意識するべきだと痛感しました。

もう一つはデバッグ力の低さです。普段のAtcoderのコンテストでも、バグらせて、原因のわからないまま終わることが多々ありました。F問題では、アルゴリズムは合っていて、実装でどこか不具合があると決めつけてしまっていたのですが、実際間違えていたのはアルゴリズムのほうでした。プログラムの途中などで何が起こっているのか把握するためにも積極的に途中経過をプリントするなど、自身のデバッグ方法の見直しをするべきだと感じました。

最後に

初のyokohama Reigionalでした。とても楽しむことができました。運営の方々、本当にありがとうございました。また、コーチをはじめ、応援してくださっていた方々もありがとうございました。