デンソークリエイトプログラミングコンテスト2026(AtCoder Beginner Contest 443) コンテストまとめ

コンテスト情報

Denso Create Programming Contest 2026(AtCoder Beginner Contest 443) - AtCoderatcoder.jp favicon

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

A 問題

  • Difficulty: 9 / NoviSteps: 9Q / 解答時間: 0:46

問題概要

英小文字からなる文字列 SS が与えられるので、 SS の末尾にsを追加した文字列を出力せよ。

解答方針

  • 単純に SSs を続けて出力すればよい。

yuulisio.com favicon

B 問題

  • Difficulty: 28 / NoviSteps: ??? / 解答時間: 7:34

問題概要

高橋君は年に 11 度の節分には年齢と同じ数の豆を食べる。 高橋君は、今年の節分の時点で NN 歳である。

高橋君が今年以降で累計 KK 個以上の豆を食べたことになるのは、最短で何年後の節分か求めよ。

解答方針

  • 答えが XX 年後であるとすると, 次の不等式が成り立つ。
i=0X(N+i)K    {N+(N+X)}(X+1)2K0\sum_{i=0}^{X} (N + i) \geq K \iff \dfrac{\left\{ N + (N+X) \right\} (X + 1)}{2} - K \geq 0
  • 左辺は XX の2次関数であるため、 XX の正領域で単調である。
  • したがって、二分探索でこれを満たす最小の XX を求めればよい。

  • ただ、そんなことをやらなくても、ループ文で単純にシミュレーションすれば高々 10510^5 回で終わるので、それで十分間に合うようだ。
yuulisio.com favicon

C 問題

  • Difficulty: 150 / NoviSteps: 3Q / 解答時間: 6:43

問題概要

AtCoder 社は時刻 00 に始業し時刻 TT に終業する。 高橋君は AtCoder 社の業務時間中に chokutter を以下の規則で見る。

  • 始業と同時に chokutter を開く。
  • 青木君が高橋君のデスクの後ろを通りかかった瞬間に chokutter を開いていた場合、直ちに chokutter を閉じる。
  • 高橋君は、 chokutter を時刻 tt に閉じると、その 100100 秒後に必ず chokutter を開く。

始業から終業までに NN 回青木君が高橋君のデスクの後ろを通りかかっており、そのうち ii 回目は時刻 AiA_i であった。 始業から終業までに、高橋君は合計で何秒 chokutter を見ていたか求めよ。

解答方針

  • 高橋君が chokutter を見ていた総時間、最後に開いた時刻, 現在 chokutter を開いているかどうかを管理しながら、シミュレーションを行う。

yuulisio.com favicon

D 問題

  • Difficulty: 738 / NoviSteps: 1Q / 解答時間: 31:08 + WA x2

問題概要

N×NN \times N のマス目があり、各列に 11 つずつ駒が置かれていて、ii 列目の駒は上から RiR_i 行目に置かれている。

ここで、以下の操作を 00 回以上何度でも行うことができる。

  • 一番上の行以外に存在する駒をひとつ選び、その駒を上に隣接するマスに移動させる。

以下の条件を 1iN11 \le i \le N-1 を満たす全ての整数 ii について満たすようにするために必要な操作回数の最小値を求めよ。

  • ii 列目の駒が上から xx 行目、 i+1i+1 列目の駒が上から yy 行目に存在するとする。このとき、 xy1|x-y| \le 1 を満たす。

解答方針

  • ii にいる駒に注目すると、その一つ隣の列にいる駒は、最低でも上から Ri+1R_i + 1 行目まで移動させなければならない。
  • そのまた隣の列にいる駒は、最低でも上から Ri+2R_i + 2 行目まで移動させなければならない。
  • これを一般化すると、「列 ii から見て左右に jj 列離れた列にいる駒は、最低でも上から Ri+jiR_i + |j - i| 行目まで移動させなければならない」となる。
  • この条件を全ての列について伝播させなければならないので、最終的な各列の駒の行番号を RiR_i^{\prime} とすると、以下のようにすればよい。
    • RiR_i の先頭から Ri=min(Ri,Ri1+1)R_i^{\prime} = \min(R_i^{\prime}, R_{i-1}^{\prime} + 1) と伝播させる。
    • RiR_i の末尾から Ri=min(Ri,Ri+1+1)R_i^{\prime} = \min(R_i^{\prime}, R_{i+1}^{\prime} + 1) と伝播させる。
  • 最後に、 i=1N(RiRi)\sum_{i=1}^{N} (R_i - R_i^{\prime}) を出力する。

  • オーバーフローに気づかず提出して2ペナ。
yuulisio.com favicon

成績

Contest Result - AtCoderatcoder.jp favicon
  • 順位: 2866th / 11766
  • Performance: 1104
  • 1263 → 1248 (-15)

E問題に手を出してみたが、BFSをうまく実装できずに断念。