AtCoder Talent Quest 〜 今から28卒には脱出してもらいます〜予選 #2(AtCoder Beginner Contest 480) コンテストまとめ

謎の脱出ゲーム予選2回目。


また、今回からアルゴ部門における競技ルールに変更があったらしい。

AtCoder生成AI対策ルール - 20261014版 - AtCoderInfoinfo.atcoder.jp favicon

コンテスト開始前にあらかじめ生成AIを用いて作成しておいたコードの使用は、上記の事前公開および参照URLの添付に関する条件を満たす場合に許容されます。

コンテスト情報

AtCoder Beginner Contest 480 - AtCoderatcoder.jp favicon

コンテスト時間: 2026-10-17(土) 21:00 ~ 2026-10-17(土) 22:40 (100分)

A 問題

  • Difficulty: 35 / NoviSteps: 6Q / 解答時間: 3:44

問題概要

2×22 \times 2 のグリッドがある。 グリッドの各マスにはA, B, C, Dのいずれかがちょうど 11 つ書かれており、44 マスに書かれている文字は相異なる。

Aが書かれたマスとDが書かれたマスが隣接しているかどうかを判定せよ。

解答方針

  • 以下の場合は条件を満たさないのでNoを出力する。それ以外はYesを出力すればよい。
    • 左上がAで右下がD
    • 右上がAで左下がD
    • 左上がDで右下がA
    • 右上がDで左下がA

  • A問題の癖にちょっと頭を使う必要がある。

ABC 480 A - ADjacentyuulisio.com favicon

B 問題

  • Difficulty: 201 / NoviSteps: 5Q / 解答時間: 9:22

問題概要

選挙に NN 人の候補者が立候補している。 各候補者の名前は英小文字からなり、互いに異なる。

MM 枚の投票用紙が投じられ、投票用紙 jj には英小文字からなる文字列 TjT_j が書かれていた。

TjT_j が名前に完全に一致している候補者がいる場合、その候補者に 11 票が入る。 そうでなく、TjT_j を 11 文字書き換えて名前が一致するような候補者がちょうど 11 人いる場合、その候補者に 11 票が入る。 そうでない場合、それは無効票となる。

i=1,2,…,Ni=1,2,\dots,N について、候補者 ii に何票入るかを求めよ。

解答方針

  • 基本的には言われたことをやるだけだが、B問題にしては重めな実装が要求される。

ABC 480 B - Invalid Voteyuulisio.com favicon

C 問題

  • Difficulty: 625 / NoviSteps: 2Q / 解答時間: 8:38

問題概要

あるシャワーでは、時刻 tt にボタンを押すと時刻 tt から時刻 t+Kt+K までの KK 秒間お湯が出る。 お湯が出ているときに再びボタンを押した場合も、最後にボタンを押した時刻から KK 秒間お湯が出る。

NN 人の青木君がいて、ii 人目の青木君は時刻 AiA_i にボタンを 11 回押す。

時刻 00 から時刻 TT までの間に常にお湯が出ているようにするために、高橋君は最小で何回ボタンを押す必要があるかを求めよ。

解答方針

  • お湯が出ている時間を区間として考え、重なる区間をmergeする。
  • その後、区間 [0,T][0, T] でまだ覆われていない区間の長さをそれぞれ dd とすれば、その区間に対して ⌈dK⌉\left\lceil \frac{d}{K} \right\rceil 回ボタンを押す必要がある。
  • これをすべての区間に対して行い、合計すればよい。
  • AiA_i の昇順にソートし、左から順に処理していく。

サンプルケースでは、AiA_i がソートされていないケースや、 max⁡Ai>T\max A_i > T のケースがなくて優しくない。


ABC 480 C - Self-Stopping Showeryuulisio.com favicon

D 問題

  • Difficulty: 864 / NoviSteps: 1Q / 解答時間: 30:41 + WA x1

問題概要

長さ NN の整数列 (A1,…,AN)(A_1,\dots,A_N) が与えられる。

以下の手順で長さ N(N+1)2\frac{N(N+1)}{2} の数列 BB を作る。

  • 最初、 BB を空列とする。
  • i=1,2,…,Ni=1,2,\dots,N の順に、BB の末尾に (A1,…,Ai)(A_1,\dots,A_i) を連結する。

以下の形式のクエリが QQ 個与えられるので、それぞれ処理せよ。

  • L,RL,R が与えられる。BL+BL+1+⋯+BRB_L+B_{L+1}+\dots+B_R を求めよ。

解答方針

  • Gi=(A1,A2,…,Ai)G_i = (A_1, A_2, \dots, A_i) とすると、GiG_i の末尾の項は BB の Ci=i(i+1)2C_i = \frac{i(i+1)}{2} 番目に現れる。
  • f(x)=∑i=1xBif(x) = \sum_{i=1}^{x} B_i とおけば、各クエリでは f(R)−f(L−1)f(R) - f(L-1) を計算すればよい。
  • xx が GkG_k に含まれる要素であるとすると、 k=min⁡{i∣Ci≥x}k = \min\{i \mid C_i \geq x\} と定義できるから、これは二分探索で求めることができる。
  • すると、GkG_k より前にある要素の個数は Ck−1C_{k-1} 個なので、要素 xx の GkG_k の中での位置は x−Ck−1x - C_{k-1} と表せる。
  • したがって、 f(x)=Tk−1+Sx−Ck−1f(x) = T_{k-1} + S_{x - C_{k-1}} と書くことができる。ただし、
    • Si=∑j=1iAj,Ti=∑j=1iSjS_i = \sum_{j=1}^{i} A_j, \quad T_i = \sum_{j=1}^{i} S_j

ABC 480 D - Concatenation of Prefixesyuulisio.com favicon

E 問題

  • Difficulty: 1355 / NoviSteps: 1D / 解答時間: 37:54

問題概要

以下の条件を全て満たす正整数列 A=(A1,…,A∣A∣)A=(A_1,\dots,A_{|A|}) を良い数列と定める。

  • ∣A∣≥3|A|\geq 3
  • AA は等差数列である。
  • A2−A1>0A_2-A_1 > 0

良い数列のうち、要素の総積が NN 以下であるものの個数を求めよ。

解答方針

  • 長さ kk の数列に対して、初項 aa の探索範囲は 1≤a≤Nk1 \leq a \leq \sqrt[k]{N} であり、aa を固定すれば二分探索で条件を満たす最大の公差 dd を求めることができる。
  • また、初項・公差がともに 1 の場合が積を最小にするので、k!≤Nk! \leq N を満たす kk だけ調べれば十分。
    • 20!≈2.43×101820! \approx 2.43 \times 10^{18} なので、 k<20k < 20 まで調べればよい。
  • 長さ kk の数列について、初項は高々 N1kN^{\frac{1}{k}} 通り、二分探索は O(log⁡N)O(\log N) 回、それぞれの判定に O(k)O(k) 時間がかかるから、全体としては、O(∑k=320kN1klog⁡N)=O(N13log⁡N)O\left(\sum_{k=3}^{20}kN^{\frac{1}{k}}\log N\right) = O(N^{\frac{1}{3}}\log N) の計算量となる。

ABC 480 E - Product-Bounded Arithmetic Sequencesyuulisio.com favicon

成績

Contest Result - AtCoderatcoder.jp favicon
  • 順位: 1474th / 11368
  • Performance: 1480
  • 1399 → 1407 (+8)

A, B問題が意外と難しくて焦ったが、E問題が割とすんなり解けてセーフ。