JAG 夏合宿 2024 に参加したのでその参加記を書く.覚えてない部分はなんとなくで書いてるのでたまに間違ってるかも.
チームメンバーは国内予選と同じ.
コンテスト以外のお話
Day 0
準備をした.来年以降のために持っていったもの,持っていけばよかったものなどを書いておく
持っていたもの:
- 服・下着など
- パジャマ
- バスタオル
- ハンドタオル
- ハンカチ
- ポケットティッシュ
- 歯ブラシ
- パソコン
- スマホ
- 充電器
- 電源タップ
- ライブラリを印刷した紙
- 考察用紙
- 筆記用具
- 英和辞典
- 財布
- パスモ
- 家の鍵
- イヤホン
- エコバッグ
持っていけばよかったもの:
- サンダル or スリッパ
- ぬいぐるみ
- クリアファイル
- アイコンの写真付きの名札
持って行ったのに使わなかったものはポケットティッシュくらい.でもこれは時と場合によるのであって損はなさそう(英和辞典は開かなかったけど精神的に助かっていた).
Day 1
代々木のマックで月見バーガーを食べてから会場に向かった.12 時すぎに着き,13 時から 3 時間のコンテストをした.
コンテスト終了後は食事や解説などの後に部屋に行った.部屋に着いてすぐに,ABC の時間も近かったのでお風呂に行ったが,去年と同じ道で迷ってしまった.
来年用メモ: C 棟の番号の若い方に進んだ先の出口から出て,右に曲がるとすぐに風呂に着く
ABC では,隣にいた anmichi さんが 8 位でびっくり.強い...
ABC の終了後は upsolve を未来の自分に任せて談話室でボドゲなどをした.消灯直前に部屋に戻り,0 時過ぎに就寝.
Day 2
7 時ごろに起床.ベッドが固く,腰と肩が痛かった.朝ご飯を食べ,支度をすると 9 時前だったのでコンテスト会場に行き 5 時間を走った.コンテスト後は少し部屋でダラダラしてから懇親会へ.
懇親会では,お寿司とか焼きそばとかローストビーフとかを食べた.色んな人と喋ろうと思っていたのに momoyuu さんと話していたら楽しくて気づいたら解散時間に...
そのあとはボドゲをした.Ito では「強そうな効果音」というお題がかなり脳死になれて楽しかった.この日も消灯直前に部屋に戻り,0 時過ぎに就寝.
Day 3
特に書くことがない... Day 2 と同じように過ぎて行った.解散後はチームメイトと食事に行った.
コンテストのお話
Day 1
EHIJK の 5 完で 18 位.かなり良くない立ち回りをしてしまった気がする.
自分は後ろから読む担当だったのでまず K 問題を読んだ(L 問題に気づかなかった).同じ設定で単調減少列になるという結論を見たことがあったのでそのまま実装.狭義ではなく広義で実装してしまい 1 ペナするが 23 分で AC.
解き終わるとチームの考察メモに「A:区間最頻値クエリ」とあったので Mo で解けませんか?と提案.ripity に書いてもらったが更新に log がつくので TL 1.2sec では厳しく TLE してしまう.この辺りでようやく順位表を確認すると I が簡単らしいので neko に解いてもらう.40 分で AC.
その後は ripity が A の定数倍高速化を頑張っていたが TLE が取れない.その合間に J と H を解いた.J では二次元累積和をバグらせたので neko に直してもらい 104 分で AC,H ではオーバーフローを起こしてしまった(K で書いたセグ木をコピペしたのだが,K は max 取得だったので int で実装してあり一部修正を忘れてしまった).愚直を走らせてようやく気づき 116 分で AC.気づいたら E も通っていた(125 分).残り時間は A と B を頑張っていたが結局どちらも通せず.
簡単枠に取り組むのが遅かったり,バグらせたときのムーブが下手だったなぁという感想.
Day 2
ABFGN の 5 完で 14 位.Day 1 より問題文が読みやすかった.
昨日に引き続き後ろから読んだ.前から読んでいた ripity が A が解けると言っていたのでそのまま実装を任せる.7 分で AC.少しすると,G に AC が出ているので取り組む.こういうので嘘貪欲をしてペナをする経験を何回かしているので ripity と 2 人で正当性を示しながら考察した.
まず,$ 1 $ の棒を使おうと思うと,$(1,1,1),(1,2,2),(1,3,3)$ のどれかになる.さらに,$(1,2,2),(1,3,3)$ は合計で高々 $ 2 $ つあればいい.これは $ 1 $ がなければ $ 2 $ と $ 3 $ を同一視していいことから従う.よって $ 1 $ を正三角形→二等辺三角形の順で貪欲に取ってから,残った $2,3$ の和を $ 3 $ で割って足せばいい.この $\frac{M}{2}$ より大きい部分をまとめられるという考察で原案の長さ $ 8 $ まででも解けるという話を聞いた($ M $ は長さの最大値).
次に,F を考えた.木のパス更新クエリに見えるので HLD を書こうと思うが,冷静になると更新されるのが高々 $ 2 $ 点なので前計算をしておけばクエリあたり $O(1)$ になる.結構びっくりな結論だと思っていたが imos 法を一点でやってると思えばかなり自然だった.71 分で AC.この辺りで順位表を確認すると,BKFN あたりが解かれていた(気がする).自分は N を担当した.
N は素数に注目した in-place な DP で長さの最大化は達成できる.数え上げは各素数ごとに,その時点で最大化を達成しているときに最後に見た index を持っておけば高速に更新ができる.109 分で AC.この時点で 4 位とかだった.
ここから先は苦しかった.自分は K を考えていたが最後まで解けず.neko が B を解けていたので実装を任せたが大炎上していたらしい.ripity が手伝い 277 分で AC.
序盤はかなり理想的な動きができたが,後半の中難易度で一気に落ちた.これは単純に個々の自力不足.
Day 3
ABDGI の 5 完で 18 位.苦しい...
AB が簡単枠だと言われていたので A を ripity が,B を自分が担当.A は難なく 9 分で AC.B も解けた気になったので実装するが WA.なぜか壁を超えた後の処理を sum ではなく max でやっていた.結局最後はランダムを書いてミスに気づいた.116 分で AC.その間にチームメイトが I と D をそれぞれ 38 分,64 分で AC してくれていた.感謝...
そのあとは ripity と G を考えていた.1 文字ずつ伸ばしていくときに,No が返ってくるのは端についたときと違う文字を付け加えたとき.端につくのは前と後ろで 1 回ずつなので基本的には違う文字を貼り付けて信じて進むような方針でいい.23 回 No を受け取ったら 1 文字ずつ引き返す感じで実装した(ripity が).クエリの文字数上限などで 3 ペナしながら 178 分で AC.
その後は F とか K を頑張っていたが結局どちらも通せず.
B のミスが大きく 5 完最下位になってしまった.
最後に
3 日間を通して,チームとしても個人としても実力不足を感じる部分が多々あった.もっと精進して来年はもっとセットを楽しめるようになりたい.
コンテスト以外では,初めて話す人も多くてとても楽しい 3 日間だった(コンテストが楽しくなかったという主張ではないです.コンテストも面白い問題が多くて楽しかったです).
運営の皆さん,参加者の皆さん,本当にありがとうございました!!