AtCoder Beginner Contest 430 コンテストまとめ
コンテスト情報
コンテスト時間: 2025-11-01(土) 21:00 ~ 2025-11-01(土) 22:40 (100 分)
新ジャッジシステムの運用後初の ABC であった。
また、今回から AtCoder 初参加者の内部レートが上方修正されたらしい。
A 問題
- Difficulty: 18 / NoviSteps: 7Q / 解答時間: 3:57 + WA x1
問題概要
「飴を 個以上所持している人はクッキーを 個以上所持していなければならない」という法律がある。
高橋君は飴を 個、クッキーを 個所持している。 高橋君がこの法律に違反しているかどうか判定せよ。
解答方針
- であるなら
Yes、そうでなければNoを出力する。
- 最初、「クッキーを 個以上所持してはならない」と誤読したし、 と typo して 1 ペナ。何をやっているんだ?

B 問題
- Difficulty: 141 / NoviSteps: 4Q / 解答時間: 5:23
問題概要
行 列からなるグリッドがあり、グリッドの上から 行目左から 列目のマスは、 が#のとき黒く、.のとき白く塗られている。
このグリッドから縦 行横 列の領域を取り出して得られるマスの塗られ方は何種類あるか。
解答方針
- の領域を取ってきて、それを
vector<string>などで保存し、setに入れていく。 - 最後に
setのサイズを出力すればよい。

C 問題
- Difficulty: 750 / NoviSteps: 2Q / 解答時間: 9:55
問題概要
a, bからなる長さ の文字列 と正整数 が与えられる。
以下の条件を全て満たす整数組 の個数を求めよ。
- の 文字目から 文字目までに含まれる
aの個数が 以上 - の 文字目から 文字目までに含まれる
bの個数が 未満
解答方針
- を固定して、条件を満たす の個数を数える。
- の各文字までの
aとbの個数の累積和を取り、 を固定したときに以下の 2 条件を満たす をそれぞれ二分探索で求める。 - これらの差が、条件を満たす の個数となる。

D 問題
- Difficulty: 982 / NoviSteps: 1Q / 解答時間: 36:23
問題概要
数直線があり、最初は座標 に人 がひとりで立っている。
これから、人 がこの順に到着し、人 は座標 に立っていく。 人が到着するたびに、以下の問いに答えよ。
- 現在数直線に人 の 人が立っているとする。
- このとき、 を「人 に最も近い別の人までの距離」と定義する。
- を求めよ。
解答方針
- 新たに人が到着したときに、 の値に影響を受けるのは、新たに到着した人と(もし存在すれば)その左右の人だけである。
- したがって、 の差分として、新たに到着した人とその左右の人に関する の和の差分だけを考えればよい。
- 人の位置を管理するために
setを用いることで、二分探索によって新たに到着した人の左右の人を高速に求めることができる。

E 問題
- Difficulty: 1109 / NoviSteps: 1D / 解答時間: 21:42
問題概要
0, 1からなる長さの等しい文字列 が与えられる。
に対して以下の操作を 回以上行うとき、 とするために必要な最小の操作回数を求めよ。
- の先頭の文字を末尾に移動させる。
解答方針
- 文字列 の左シフトを行うということで、これは という文字列から連続部分文字列 を探す問題に帰着できる。
- これには色々な解き方があると思うが、私は KMP 法を用いて計算量 で解いた。
- Z-algorithm なら実装が ACL にあるので瞬殺できるらしい。

成績

- 順位: 997th / 9766
- Performance: 1370
- Rating: 1202 → 1220 (+18) Highest 更新!
A ~ E まで割とスムーズに解くことができた。
今回参加者少なくね?





