茶碗蒸しの雑記帳

競プロ周りの雑記

ICPC2026国内予選参加記

お久しぶりです
チーム名CtrlZzz、いつメン(dyktr_06, sepa_38)でICPC2026国内予選に出ました

国内模擬

今年は国内模擬に出てみました。sepaくんは帰省で、やきとりくんとゆるく参加しました。
Dのあたおかサイコロ場合分け問題はpythonで書いたらTLEしたのでやきとりくんにcppで書いてと投げました。
Hは木のゲーム問題で得意分野でした。状態量エスパーで通しました。
FのICPC文字列DP問題は大学でオートマトンとかの勉強をやってたのが効きました。

幸先かなり良い結果で良かった。

国内予選

予選前に調布駅前のGiGOでチュウニズムをやってたらやきとりくんも来て面白かった。
17時スタートだと勝手に思い込んでいて危なかった。16時半だと教えてくれたやきとりくんありがとう。
私はA,D,Gの考察実装を担当しました。あとはFをチラ見してから(座圧実装難っぽいので)やきとりくん得意そうと言ったり。
Dは例示例示例示で無理やりパターン出して丁寧に計算しました。下の画像みたいなメモ書いたらわかりやすかった。

この問題を考察している間にもう2人がEを考えてくれていたのですが、この間全くPCを使っていなかったので、チーム戦略としてあまり良くないなと思うなど。実際にE,Fの考察がそれぞれ終わって待ち時間が発生しました。
Gは読み終わった段階で余事象数えゲーだと思ったので、sepaくんと間違いがないように丁寧に(この数え方で全事象をカバーできるよね?みたいな)考察を進めました。駒の衝突可能性のある一直線上のマスそれぞれについて、右上と右下へ行く場合の数を求める必要があったのですが、すぐに思いつかず悩んでたらsepaくんに逆向きでやりゃええやんと言われて、その通りですとなりました。
結果としては全体20位学内1位で満足。かなり良い結果だと思います。(去年は全体48位学内2位でギリギリ通過)
ペナが無く、実装している時に沼るようなバグらせ方もしなかったので、これが横浜でもできたらいいなと思います。
ところで通過チーム内では恐らく17位ですよね?ラストイヤーなのでPlayoff行かせてくださいほんとに

ICPC2025横浜参加記

書くタイミングがあまり無かった

ICPC 2025 Asia Yokohama Regional に参加しました。チーム名は O1_Practice で(オーダーワンプラクティスと読みます。 O(1)_Practice としたかったのですが括弧文字が使用できなかった記憶)、5完17位でした。 ICPC は4年目、横浜は2年目ということで緊張感は去年よりは無く参加できました。

チームメンバー

青黄青でお送りします

  • tyawanmusi

    • 最近 AtC のコンテストに全然参加していない(けど Atcoder Daily Training はやっている)
  • dyktr_06

    • 毎週コンテストに出ている偉い人、ライブラリマニアなのでライブラリはこの人頼り
  • sepa38

    • 最近 AtC のコンテストに全然参加していない(なにしてるんだろ)

1日目

11時半くらいに関内にチームで集合し、こちらのお店でお昼を食べた。 cona-kannai.owst.jp ランチが1000円弱で食べれてとてもよかった(私はグラスワインをいただいたけど)。コーチのNafmoさんが奢ってくれて嬉しいです。

ご飯を食べたら会場へ。パッと思いつく去年との変更点としては、ソファ問題Tシャツとトランプが配られたこと、リハーサルで風船システムが実施されたことでした。

開会式が始まるまでババ抜きと大富豪で遊んでいました。トランプが光で透ける仕様だったのが少し許せないです。開会式では例年通りチーム紹介は sepa 君に投げました。

リハーサルではUS配列に苦しみながらインタラクティブ問を解いていましたが、適当にやって3ペナしてしまいました(酒飲んでるからだろと煽られた)。あと問題の封筒を破り開けるときに指を切ってしまって過剰なストレスを感じました。

晩御飯は家に帰って食べました。身内でvalorantのカスタムが発生したので1時半くらいまで遊んで、就寝しました。

2日目

荷物は必要最低限のもの以外持ちませんでした。会場でもらえる軽食を朝ごはん代わりにしてやろうと考えてました。

6時半くらいに起きて会場まで行きました。とても寒かった。

電車の中で名札用のネームカードをスマホで作りました。写真L判サイズでコンビニ印刷して半分に切ると綺麗に2枚になります。(ハサミを忘れてしまったが)

去年と違い会場に荷物を持ち込めず、必要最低限のもの以外置いていくことになった。私とsepaくんはライブラリもマスコットもないので"ガチ"手ぶらになってしまった。

コンテスト時の内容は下に書きます。コンテスト後は9階に移動して、閉会式が始まるまで名札作りしていました。ハサミを貸してくれたdyktrくんありがとう。

凍結前12位だったので20位くらいまで落ちるかと思いましたが意外と耐えて17位、解くスピードが速かったのが効きましたね。

懇親会では名札効果で去年よりもいろんな人と会話できました。全人類名札を持ってきてください。話しかけやすくなるので。あとNafmoさんの交友関係が広く、Nafmoさんについていくといろんな人に会えてよかったです。

あと、ここでいろんな企業のステッカーを貰って自分のPCに貼り付けておくと、なんかカッコイイ感じのPCになるのでお勧めです。

懇親会の最後まで居座ってそのまま帰りました。ラウンドワンとかGiGOとかうらやましいですね。来年までにtwitterを動かして交友関係を広げておかないとな~になりました。

コンテスト中

sepaくんがパスワード入力でWAを出して、そのまま何かやらかしたらしく、スタッフの方がぞろぞろ集まっているのを横目に問題をdyktrくんに開けさせ、問題を眺めました。

Dがサンプルを見るだけでわかるやつで、一応誤読がないかチェックしてから解きました。 2×10N ~ 2×10N+1-1 について10Nと分割するようにしていましたが1ペナ、112でhackされて、面倒くさくなって全探索を書いて13分1ペナで通しました。

sepaくんがEを解いてくれるらしいので、他の問題をdyktrくんと共有しながら流し読みしていました。

第一印象で解けそうなのがABCHIJだったので、Aから解きます。座標圧縮して、列の状態を4パターン持って、手前から埋めていくDPが有効そうだったのでPCが空くまで正当性を考えてました。

sepaくんがEを0:30にノーペナで通してくれたので褒めながらAに取り掛かります。DPで持つ各列の状態が4パターン、初期盤面の列の状態が4パターンなので、かなり遷移は面倒でした。1回でもWAを出したら詰むタイムの実装だと思ったので、ちゃんと手元で図を書きながら間違えないように丁寧に実装しました。1:08にノーペナACすることができ、FA+6位だったのでかなりテンションが上がりました。

sepaくんがHを解けると主張するのでPCを渡して、dyktrくんと問題の相談をしました。順序はわかりませんが、主に

  • Bは無理そう

  • Cは[1,2]の間に必ず区間の左端が来て、[3,1]の間に必ず区間の右端が2つ来るので、これらの端を上手くマッチングさせる方法を考えたい。

  • Gは数え上げ強者がいたらいいね。

  • Iは空マスが連続する区間を抜き出して、区間の端っこがAかBか盤面の端かで場合分けをし、それらの区間がA,Bの操作回数にどれくらい寄与するか考えたい。

  • Jは"ICIC..."と"PCPC..."の列を交互に並べたら条件を達成できる(もう1パターンは後で発覚)。

1:33にsepaくんがHを解いてくれました。ここが最大瞬間風速で、3位でした(びっくり)。

あとはグダグダでした。私がJの実装方針が完全にできていないのに書き始めてWA→hackできないため1から書き直してWA→ここで"IPIP..."と"CCCC..."の構築例に気付く...や、dyktrくんがIやCを書いてくれたがどっちも通せず、IはhackできずCは嘘解法で...

結局Jは3:47に3ペナでAC、CとIは通せずに終了でした。悔しいね。来年は頑張ります。

宣伝

2/28(土)に電気通信大学(東京/調布)でオンサイトコンテストMMA Contest 021が開かれます~!

MMAとは電気通信大学の技術系サークルです。私は所属していません。writerはやります。

3時間で12問くらいを想定した初中級者向けのセットらしいです。上級者も来てね。

ICPC 2024 Asia Yokohama Regional に参加した

2024/12/21,22開催のICPCにチームinactive-0.67として参加し、28位でした。初めてのICPCオンサイトだったので、コンテスト本番以外で思ったことを中心に雑記しておきます。恥ずかしながらICPCについて5%くらいしか知らない状態で参加したため、そういう人の目線の記録だと思っていただけると嬉しいです。

0日目以前

ICPCはこれで3年目で、全てメンバーは同期の二人(AtC青黄)と一緒。今まで国内予選で落ちていたたが、今年は全体40位学内1位で通過したため、今年が初めてのオンサイトとなった。
数か月経ってから交通費周りのメールが来た。交通費出るんだ~とややポジティブになって。宿泊費をもらうか悩んだが別に大丈夫やろと断った。 1か月前くらいになってからまたメールが来て、チーム紹介文とスライドを送ってくれという内容が英語で来てびっくりした。この時はまだまだ参加者同士の交流があるとかは思ってなかった。
チーム練は7月と12月(TTPC)に1回ずつやった......のだが両方とも盛大に寝坊して本当に申し訳なくなった。夏合宿はお金の都合で行かなかった。
忙しくしていたらあっという間に本番が近くなっていて、「あれ今週末!?」となったのを覚えている(SNSで競プロの話を見なかったのと、時の流れが速いのが悪い)。スケジュールを確認したら日曜日のスタートが早くて(6時起き)それなら宿泊申請すればよかったな~と思った。あと課題を週末にやる計画が崩れて若干ネガティブになったが、軽食が無限に出ると聞いてポジティブになった。 ということで週末までソワソワしながら過ごした。

1日目

初日はリハーサルのみなので何も持たず学生証だけ持って横浜に来た。なんかめちゃくちゃ混んでて疑問に思ったが、そういえば横浜って観光地だしそれかな~と思った。時間に余裕があったし、横浜に初めて来たのでチームメイトとの集合時間まで軽く散歩した。 澄んだ空気と雲のない空でとても気持ちよかった。 その後は会場近くの噴水がある公園で合流し、会場へ。確かここら辺で初めてICPCがEnglish Onlyであることを教えてもらった。受付から全てが英語でほえ~となりつつ会場へ。会場入ってすぐアナウンスでめちゃくちゃ「コード踏むな」って言っているのを聞いて、それに気をつけながらチーム名が掲げられている席まで行った。
席には机が二つ、閉じたノートPCとモニターキーボード、問題とパスワードが入っている封筒が二つ、あとはコンテストの説明周りの資料とTシャツ。資料以外は明らかに触るな~という圧を出していたのでおとなしく座った。
スタッフの人からTシャツを着て名札はずっとつけていてと指示された。Tシャツは100%綿で文化祭のクラスTとは違うな~と思った。その後はおとなしく資料を読んだり、弊学のもう1チームを探したりしていた。スタッフの人が忙しそうにしていたり、資料のチーム紹介文がふざけているものばかりでなんとなく雰囲気を理解し始めた。
開始時間が近づくととずっと諸注意が表示されていたモニターにスポンサーの映像が流れたり、オープニング映像が流れ始めて、その後はリハーサルが始まった。リハーサルではシステム仕様やコーディング環境、本番の動きを学べたのでこれでかなり安心した(pythonの実行環境はよくわからなかったけど動いたしええかとなっていた)(あとインタラクティブ問題の仕様をもう少し確認しておけばよかった)。リハーサル後はチームイントロダクションとかいうのが始まった。なんか英語で前に立ってチーム紹介しろとか言われてええ~となったのを覚えている。喋る役をレートが一番低いチームメイトにパワハラして押しつけ事なきを得た。ここでチーム紹介スライドが出てきて、ほかのチームの詳しい情報を得ることができた(あ~あの人か~みたいな)。
リハーサルではsnack area(←素晴らしい言葉)が会場の隅に開設されていて最高だった。個包装お菓子とコンビニ菓子パン(チョコパイ、ルマンド、カントリーマアム、歌舞伎揚げなど)が大量にあった。軽食が無限にあると聞いていたのは本当だった......が、やはり個包装お菓子の方が人気で早い段階で無くなっていた。それはそう。後はコーチと連絡が取れず、チーム写真を撮る人を困らせてしまった。申し訳ございません。
解散の後は早寝するために寄り道せずに帰った。

2日目

6時起きで横浜まで来て、駅近のコンビニで眠気覚ましを買おうとしたらピンク魔剤だけなくてとても悲しくなったのを覚えている。チームメイトと無事合流して受付をし、特に変なこともなく座って待った。チームメイトと本番最初の動きについて相談していると、本来の開始時間20分前くらいの時に急に「残り5分で始める」と言われてとても焦った。焦りすぎて問題とパスワードが入った封筒の破り方の相談を始めてしまった。

コンテスト中

私はAEとDの考察を担当した。Eは実装がやばそうだったがBFSではなくDFSで実装したらとてもすっきり実装できて、7分ほどでACできて気持ちがよかった。Dの考察については、コンテスト直前にちょうど「構文解析木構造で~」という話をしていたのでグラフの結合順を木構造にしたらスムースに解けてこちらも気持ちよかった。......が、実装にLCAが必須だと早とちりしてライブラリを持っているチームメイトに実装を投げてしまった。反省。

コンテスト後

終わった後は軽く片付けをして、違うフロアにある会場に移動した。そこではスポンサーの宣伝と結果発表、総括があった。
スポンサーの宣伝では一企業だけゴリゴリ日本語で話していてびっくりした(SNSでもザワっとしていた)。あと結構スマホ触っている人がいて大学の講義みたいだな~と思った。結果発表ではめちゃくちゃ盛り上げ上手なネイティブっぽい人が凍結後の提出のAC/WAを一つずつ発表していてとても盛り上がっていた。これがSNSでみんな言ってたYesNoおじさんか!と感動した。あと企業賞がいろんなチームに渡されていてうらやましかった。記念撮影の掛け声は「ICPC~」だった。あれは伝統なんですか。
コンテスト会場に戻ってきたら懇親会が始まった。立食パーティー形式で、会場の中心に長いテーブル、壁際にはスポンサー企業のブース、あとはドリンク(酒ではない)を配っているところと軽いテーブルがあった。
懇親会ではみんな喋りまくっていた。自分もいろんな人に自分から話しかけた。競プロアカウントは長らく動かしていなかったが、自分のことを知っている人がちらほらいて嬉しかった。あとchokudaiさんとのツーショが撮れた。(自分の顔だけ隠すのはやや失礼かと思います。「フリー素材なので」とおっしゃってはいましたがすいませんchokudaiさん)

あまり食べる時間的余裕がなくてお腹いっぱいにはならなかった。あと企業ブースはただの宣伝ではなく、面白そうな催しをやっていたのでもっと寄ればよかった。

まとめ

ICPCの国内予選を面白さ100点としたら横浜オンサイトは10000点です。会場ならではの熱気や興奮って本当にあるんだなと感じました。ICPCがこんなに面白いとは思いませんでした。競プロ復帰して練習し、来年に備えたいと思います。
こんな面白いものの開催に関わっている全ての方に感謝です。ありがとうございました。
この文章がICPC未経験の人が全体の雰囲気を知る助けになればと思います。

来年用のリマインド

  • 宿泊申請をする
  • Wifiがあるわけではないので通信制限にならないようにする
  • 良さげなマスコットを見つける
  • チーム紹介をいい感じにする。スライドにSNSのアイコンを乗っける。
  • 問題は全部読もう。問題文を読んでいない段階の第一印象と難易度の相関は無いです。
  • ICPC前に幾何問題に慣れておく
  • 目当てのお菓子は早めに確保する
  • YesNoがあるのでコンテスト終了直後に結果をツイートしない
  • 懇親会ではあまり食べずに人と話したり企業ブースを見る
  • SNSアカウントの名札を持っていく