CF2172L Maximum Color Segment

题目描述

给你一根长度为 $n$ 的绳子,每个单位长度都被涂成红色或黑色。绳子可用一个长度为 $n$ 的字符串表示,字符 R(红色)和 B(黑色)。还给你两个整数 $m$ 和 $k$。 你可以最多进行 $m$ 次(也可以一次不做)如下操作: - 任选长度恰好为 $k$ 的一段连续子串。 - 将子串内每个单位的颜色反转:R 变为 B,B 变为 R。 例如,考虑绳子 RRRRBRRR,$k=4$。如果你选择第 $3$ 个到第 $6$ 个字符(RRRRBRRR),经过一次反转后,绳子变为 RRBBRBRR。 定义“颜色段数”为:将绳子划分为若干连续的段,每段均由同一种颜色组成,且段数最少。例如,RRBRRRBB 的颜色段数为 $4$:RR、B、RRR、BB。 你的任务是,在至多 $m$ 次操作后,求能够得到的颜色段数的最大值。 $^{\ast}$一个字符串 $t$ 是字符串 $s$ 的子串,当且仅当能通过从 $s$ 的首部和尾部分别删除若干(可以为零或全部)字符后得到 $t$。

输入格式

第一行包含三个整数 $n$、$m$ 和 $k$,分别表示绳子的长度、最多可操作次数和每次操作的反转区间长度。 第二行包含一个长度为 $n$ 的,仅由 R 和 B 组成的字符串,表示初始的绳子内容。 - $1 \leq n \leq 3000$ - $0 \leq m \leq 3000$ - $1 \leq k \leq n$

输出格式

输出一个整数,表示最多进行 $m$ 次操作后,绳子的最大颜色段数。

说明/提示

由 ChatGPT 5 翻译