atcoder#ABC300F. [ABC300F] More Holidays

[ABC300F] More Holidays

题目描述

ox からなる長さ N N の文字列 S S と、整数 M,K M,K が与えられます。
S S には少なくとも 1 1 つの x が含まれることが保証されます。

S S M M 個連結して得られる長さ NM NM の文字列を T T とします。 T T に含まれる x のうち丁度 K K 個を選んで o に変えることを考えます。
あなたの目標は、変更後の T T o のみからなるできるだけ長い連続部分文字列が含まれるようにすることです。
o のみからなる連続部分文字列の長さとして達成可能な最大値を求めてください。

输入格式

入力は以下の形式で標準入力から与えられる。

N N M M K K S S

输出格式

答えを整数として出力せよ。

题目大意

给你一个由 ox 组成的长度为 NN 的字符串 SS,以及整数 MMKK。保证 SS 至少包含一个 x

假设 TT 是由 SS 复制 MM 次而成的长度为 NMNM 的字符串。考虑将 TT 中的 KKx 恰好替换为 o

你的目标是在替换后的 TT 中有尽可能长的由 o 组成的连续子串。

找出在替换后由 o 组成的连续子串的最大长度。

10 1 2
ooxxooooox
9
5 3 4
oxxox
8
30 1000000000 9982443530
oxoxooxoxoxooxoxooxxxoxxxooxox
19964887064

提示

制約

  • N,M,K N,M,K は整数
  • 1  N  3 × 105 1\ \le\ N\ \le\ 3\ \times\ 10^5
  • 1  M  109 1\ \le\ M\ \le\ 10^9
  • x x を文字列 T T に含まれる x の総数としたとき、 1  K  x 1\ \le\ K\ \le\ x
  • S S ox からなる長さ N N の文字列
  • S S には少なくとも 1 1 つの x が含まれる

Sample Explanation 1

S= S= ooxxoooooxT= T= ooxxooooox です。 3 3 文字目と 4 4 文字目の xo に変更することにより、変更後の T= T= ooooooooox となります。 このとき o のみからなる長さ 9 9 の連続部分文字列が得られ、これが達成可能な最大値です。

Sample Explanation 2

S= S= oxxoxT= T= oxxoxoxxoxoxxox です。 5,7,8,10 5,7,8,10 文字目の xo に変更することにより、変更後の T= T= oxxooooooooxxox となります。 このとき o のみからなる長さ 8 8 の連続部分文字列が得られ、これが達成可能な最大値です。