AtCoder Beginner Contest 299 C問題 Dango
問題
提出解答
問題の概要
を正の整数とする. このとき, 文字列 がレベル のダンゴ文字列であるとは, 以下の条件を全て満たすことである.
- は長さ である.
- の先頭と末尾のうち, どちらか一方のみが であり, 残りの 個の文字は である.
長さ の からなる文字列 が与えられる. 次の条件を満たす正の整数 は存在するか? 存在するならば, 条件を満たす の最大値を求めよ.
- の連続する部分列のうち, レベル のダンゴ文字列が存在する.
制約
- は からなる長さ の文字列
解法
に のどちらか一方しか存在しないとき, これは明らかにダンゴ文字列になる部分列は存在しない.
よって, には の両方が存在すると仮定しても良い. このとき, は連続部分列として のうち少なくとも一方を含むので, は条件を満たす.
を で区切ったとき, 各区画における の数を左から順に とする *1.
として, とする. このとき, に の両方を含むという仮定から, であるような任意の正の整数 に対して, を担う区間において, 左端 個または右端 個の を用いることにより, レベル のダンゴ文字列を構成できる.
また, であるような任意の正の整数 に対して, には 個連続する の連続部分列は存在しない.
以上から, 答えは である. この はランレングス圧縮を利用することによって, 時間で求められることができる.
*1:例: のときは である.