AtCoder Beginner Contest 229 D 問題 Longest X
問題
提出解答
問題の概要
からなる文字列 が与えられる. 以下の操作を高々 回行うことができる.
- にある を に置き換える.
高々 回の操作後, は最大で何個連続させられるか?
制約
- は からなる文字列
- は整数
解法
に対して, 「答えが 以上になるか?」という問題を考える. この問題の解答は単調減少なので, 二分探索で最終的な答えを求めることができる.
よって, 「答えが 以上になるか?」 ということを考える. つまり, ある連続する長さ の区間において, 回の操作で全て にできるかどうかを判定することになる.
これは長さ の区間で, その区間にある の個数が 個以下であることが可能な必要十分条件になる.
事前に累積和を利用して, を にある の個数を計算することにより, で判定できる.
よって, で正解を導くことができた.