目次

  1. はじめに
  2. CodeQUEENって?
  3. 決勝より前のおはなし
    1. CodeQUEENなるものが開催されるってよ
    2. え、私でも行けるんですか?
    3. どきどき予選
    4. 20人もいなかった
  4. 決勝の日のおはなし
    1. 当日だ!
    2. 企業の紹介のはじまりはじまり
    3. 待ってました!決勝!
    4. 問題の振り返り
      1. A QUEN
      2. B N-Queens Problem
      3. C Path Intersection
      4. D Moving Queen
      5. E Good Partition
      6. F Queen's Crown
    5. 座談会を聞く
    6. 懇親会
    7. 競プロ女子部だー!
  5. まとめ

はじめに

2023年8月6日、CodeQUEENの決勝戦が東京大学にて行われました。
初めて競プロで決勝に進出したようれしーということでここに記録を残したいと思います。 (終わってから数か月経っていることは棚に上げときます)

CodeQUEENって?

kenkooooさんがコンテストを開催するために設立したAlgoParade社が企画してくれました。 (コンテストを開くために会社つくるって?え?すごい)
このコンテストには予選で上位の成績を残した高校生から社会人の非男性50名が参加しました。 予選はAtCoder上で行われました(リンクはこちら)。 予選についても次で触れておきます。
あとここから文体が変わります。ひとりごと成分多め。

CodeQUEENなるものが開催されるってよ

当時緑色の私、ARCで水パフォを出して嬉しくなっていた頃、「そろそろまたARC生えるかなー」と AtCoderのコンテスト予定一覧のところを見るとどうやら「CodeQUEEN 2023 予選 (AtCoder Beginner Contest 308)」と書かれているではないか。 というわけでコンテストの詳細を見てみる。
「決勝が東京大学で8月6日ねえ…50人かぁ…」むずそう。出られるかな。
まだ緑上位(当時)だし。
いやでももうちょっと頑張れば水パフォ安定しそう。
ん?8月6日ってもう帰省してない?予約する前でよかったー。 ということで早速親にお願いして帰省の日程を遅くしてもらった。
出られると決まったわけではないんだけどね。
なんかわんちゃん出られるんじゃね?とかキャンセル料が…とか思ったので。

ここで話は変わるが、5月28日に電気通信大学にてMMA Contest 015が開催。 初めてのオンサイトだー!さすが東京!オンサイトが充実している!
そこであの超つよつよ赤コーダーの某サンリオちゃんに出会う。 話が盛り上がるうちに私が女性だと分かったのか、「CodeQUEEN出るの?」みたいな話題が。 「行きたいですねー」などと言っていたら某サンリオちゃんは「多分行けるんじゃないんですかね」と。

え、私でも行けるんですか?

正直、最初にCodeQUEENのお知らせを見たとき、緑・水色程度じゃ無理だと思っていた。 だってトヨタコンの決勝って基本黄色以上の方が行っていなかったっけ?
でもよく考えたらTwitter上(当時はXじゃなくてTwitterだったはず)でつよつよ女性コーダーを観測した記憶あまりないな?となった。 某葉っぱ系野菜さんと某歌を歌うRust勢さんと、あれ、あれ?????思いつかない。 しかも私と枠を争うのって社会人やJOIerじゃなくて女子大学生や高専生でしょ? え、誰がいるの?全然いなくない?となった。
たしかに行けそうだ。頑張ろう。
ということで競プロのモチベがまた一つ増えた。

どきどき予選

さあさあ、予選の日がやってきた。朝からずっと緊張していた。 無事に水色にもなったし、とりあえず頑張るしかない。
というわけで予選結果は6完で1230位。みんなつおい。

2ペナ食らったのが痛手になったらどうしよう。これで決勝ボーダーの少し下にいたら…嫌だ。
ただ、ボーダーがどこにあるかなんてさっぱり分からない。 私は、非男性の大学生、高専生などのうち20番目以内なら決勝に行ける。 自分より上の1229人のうち日本に住んでいる女子大学生たちが一体何人いるのか、 20人いるのかなんて全く見当がつかないので、メールを待つのみ。

20人もいなかった

おお、決勝へのご案内メール!!!というわけで参加する意思を運営に即見せる。
帰省の日程遅らせて良かった~~! 決勝当日に知ったことだけれども、どうも予選突破者のなかで10位くらいだったらしい。 あらすごい。私水色ぞ?よわよわぞ?
ところで一度も性別聞かれてないけど、間違って性自認が男性の方で深く考えず「決勝だわーい」 といって参加しちゃう人が一人くらいいてもおかしくないよね?とも思った。まあいいか。
そもそも女性コーダーは本当に少ないんだと分かりました。 特に水色以上の人。
観測できていないだけだと思っていました。
どうして競プロとその楽しさを見つけてくれないんだ世の女性たちよ!(うおー)

とりあえずあとは、決勝当日まで水色を維持しておくだけ。(1回緑に落ちました)

当日だ!

さあ、早起きしないとなということで前日(土曜日)はABCに参加して復習をして即就寝。健康的な競プロerです。
無事早起きに成功し、昼食片手に、正確にはバッグに入れて東大に向かいました。
私よりも早く到着しているのが5人くらい。 ちょっと怖くなっちゃって声をかけられなかった。 でもせっかくのオンサイト、ここで仲良くならなくてどうする?ということでこの後は勇気を出して話しかけにいくようにしてみた。
開場してから、buriodenさんなど、先日競プロ女子部で行われたバチャのチームメンバーが全員集合。 対面は大体はじめましてなのですごく緊張した。
あとは某果物さんと某揚げ物さんの結婚をお祝いしたり、なんやかんや雑談しました。
あと誰かの「考察用ノート忘れてもモノグサが提供してくれたノートがあるからメモがとれる~♪」というひとりごとが聞こえた。 私はちゃんと持ってきた。
そう、ほかにも机には飴やシール、謎解きなどいろいろあった。
そういえば見覚えあると思ったら、いい生活さんからいただいたシールはうちの大学の横浜行くICPCのチームが飛び賞でもらってたものと同じだ。 席は指定されていて左側の方がレートが高かった(多分予選の順位順かな)。私は左側の後方にいました。 前に見える某葉っぱ系野菜さんや某果物さん、某オレンジのキャラクターさんなどつよつよのオーラ…
横には世界大会に行った高校生…
彼女らを常に視界に入れながらの決勝でした。

企業の紹介のはじまりはじまり

まずは、協賛をしてくれた企業様のご紹介(こんな素敵なコンテストを支えてくださってありがとうございます!!!!)。 大学3年生ということで就職について本格的に考え始める(かもしれない)学年だし、自分に向いてそうな会社がないかという視点でも聞いてみる。
院進するにしても、先に考えておく方が理解が深まりそうだし。
競プロと業プロの性質が異なるのは承知しているので、「競プロerさんほしいです!」という会社さんが案外あるものなのだなあと驚き。 完全に趣味で競プロをやっていたけれど、もしかして就職にも役立つ?となった。 でも趣味で培ったスキルを仕事に活かせるのは良いことだよね。
今の大学生生活を全力で楽しむのも大事だけど、今からでも将来について考えないといけないなと思いました。

待ってました!決勝!

協賛企業の紹介の次はコンテスト。 全6問。 問題はここをクリックしてね。 結果としては上位には入れなかったです。 Dをあとちょっとで通せたかもなんだけどなー。
とにかく、問題を1問1問振り返っていきましょー。 予告、後半雑い。

A QUEN


s.replace(c, c * 2)

Pythonちゃん便利ですねえーー。
どうやらオンサイトではFastest Answerだったらしい!嬉しい~
これはPythonのおかげといっても過言ではない。うん。
QUEENに関する問題が早速登場してわくわくしました。

B N-Queens Problem

DFSをしたくなったので速度で殴れる(可能性がある)C++に変更。
PythonとC++の両刀使い良いですよ。全人類におすすめ。 そんな記事もいつか書きますかね。
解法としてはクイーンがあるところからここには置くなビームを発射。 この方針は定数倍が重いし、実際、実行時間的にもC++でやって成功だったっぽいね(1147 ms)。 軽い実装もできるようになりましょうね。(戒め)

C Path Intersection

意地のDFS。コンテストが終わってから気づいたのですが、ちょっとしたおもしろ実装をしています。
実際の実装の一部はこちら

if (i == s)
  dfs(i, -1, 1);
else if (i == t)
  dfs(i, -1, 1);
else
  dfs(i, -1, 1);


場合分けの必要ないやん。。 この部分に関してはプログラミングやったことなくても雰囲気で理解できる(と思う)のでぜひ鼻で笑ってください。 実装途中まで存在した幻の4つ目の変数の値を場合分けしないといけなかったもので、ええ。
図を描いて、「条件に当てはまる頂点はここね~」となり、当時LCAなんて知らない私は愚直に頑張った。 今は分かります。サークルの勉強会でやりました。成長した。えらい。

D Moving Queen

初期状態から1回操作をしたときの盤面と最後の状態から1回操作を戻したときの盤面を探す。 そこを愚直にやるとTLEするので、縦、横、斜めにグループ分けをしてタグ付けをする。(うまく説明できない…) 解説を読む限りでは方針はあっていたけどバグって通せず。C++はデバッグがちょいとめんどくさい。 オンサイトでは橙のお方が先にEを解いたことで回避されていたみたい。 一応それを知った私はEも見たけれど、こっちの方が簡単そうだった(というか方針はすぐ思いついた)ので、 Cを解いた後は残り時間はDを実装。
まわりに流されず判断をしたことは自分でも評価しよう。解けなかったけど!!!

E Good Partition

増えているときと減っているときに注目すれば良い気がする!それだけ!

F Queen's Crown

Cを解いた後に一瞬見てやめました。

座談会を聞く

いい生活さんとfreeeさんの座談会。
正直コンテストで頭が疲れていたけれど、将来に役立ちそうなので頑張って聞く。
色々な会社さんを見て、「何が当然か」、「何が普通か」、そのうえで「何が特色か」を知っていかないと、 私が将来働くうえで希望する条件がもしかしたらどこの会社でも満たしうるものだったり、 逆に度を過ぎていて叶えようがないものだったりすることに気づかないかもしれない。 仮にその会社に就職する気がなくとも、それに気づくためのサンプル数は増やしたい。
その点、スポンサーという形で多くの企業さんのお話を聞けるのは良いことでした。

懇親会

うおおおすしにサンドウィッチにお肉に…豪華だ…でも写真がない…
おすしは一人1パックだったけどお魚が苦手なのでぶりさんにあげる(押し付ける)。 ここで競プロ女子部の方々の顔と名前を一致させたり、スポンサーの方々と話して今後就活をするときの軸を探ってみたり…
一大学生競プロerとして企業様に申し上げますが、こうやってスポンサーをしていただけると就職するときの選択肢に食い込んできます。 それもかなり積極的に応募したくなる部類に。 というわけでこれを見た企業様はぜひぜひ競プロ関連イベントでスポンサーをしてほしいな~ (してくださいお願いします) ABCでスポンサーしてる企業様だって、私は毎回調べます。
私がお力添えできそうなお仕事あるかしらと。
スポンサーをしてるってことは業績安定しててよさげだなーと。
以上、利用者側の意見でした。

あとは社会人競プロerとも会話しました。 主婦勢の方々、子育てをしながら競プロしてるの本当にすごいの気持ちになりました。 仕事をしている方々、平日なかなか時間とれない中、いつ精進してるんだ。すごいです。 高校生も早い段階で競プロという存在に出会えてていいなー、せっかくだし極めていってくれの気持ち。
こんな楽しいこと、もっと早く出会いたかったよ。
競プロをきっかけに、違う年齢層の方や、違う大学の人に出会えてよかった。
競プロ自体も楽しいけれど、思ってもいなかったメリットがあった。
自分の見えている世界が確実に広がった。
確実に私の人生は変わった。
はい、ここでしみじみタイムは終わり!CodeQUEENのイベントのお話も終わり!

競プロ女子部だー!

buriodenさんの声かけによりしゃぶしゃぶの会が開催決定。わーい(懇親会でもうお腹いっぱいだったんだけどな、まあいいか!)
行動力がすごいなあ。尊敬。
秋葉原で20人くらいの大所帯。
CodeQUEENには制限で残念ながら参加できなかった中学生(つよつよ競プロerの卵!)や某歌を歌う方もいてわいわい。 しゃぶしゃぶを初めて外で食べたんですが、いろんな味を楽しめておいしかったです。
おなかぷくぷくになりましたとさ。
長いようで短い1日の終わり。

まとめ

楽しかったです!!!また来年もCodeQUEENやってほしいなぁ|д゚)チラッ
競プロを改めて頑張りたいと思えました。 将来についても一考させられるイベントになりました!
来年もあれば、もっともっと強くなって表彰台にのりたいなあ。