#CF2070C. 有限次涂色
有限次涂色
C. 有限次涂色
每个测试点的时间限制: 秒
每个测试点的内存限制: 兆字节
有一条由 个格子组成的条带,初始时所有格子都是红色。
在一次操作中,你可以选择一段连续的格子并将它们涂成蓝色。涂色之前,选中的格子可以是红色或蓝色。注意:不可以将它们涂成红色。
你最多可以执行 次操作(可以为零次)。
对于每个格子,最终期望的颜色已指定:红色(R)或蓝色(B)。
显然,在 次操作内不一定能满足所有格子的要求。因此,对每个格子还指定了一个惩罚值:如果最终颜色是错误的,就应用这个惩罚。
第 个格子的惩罚是 。
最终涂色的代价定义为:所有颜色错误的格子中,惩罚值的最大值。如果没有颜色错误的格子,代价为 。
问:能够达到的最小代价是多少?
输入
第一行包含一个整数 ()——测试数据的组数。
每组测试数据的第一行包含两个整数 和 (;)——条带的长度和最大操作次数。
第二行包含一个由 个字符 R 和/或 B 组成的字符串 。R 表示该格子最终应是红色,B 表示应是蓝色。
第三行包含 个整数 ()——每个格子的惩罚值。
所有测试数据的 之和不超过 。
输出
对于每组测试数据,输出一行一个整数——能够达到的最小代价。
示例
输入
5
4 1
BRBR
9 3 5 4
4 1
BRBR
9 5 3 4
4 2
BRBR
9 3 5 4
10 2
BRBRBBRRBR
5 1 2 4 5 3 6 1 5 4
5 5
RRRRR
5 3 1 2 4
输出
3
3
0
4
0
注意
- 第一个测试数据:可以涂色第 到 个格子。涂色后为
BBBR,只有第 个格子颜色错误,其惩罚为 ,因此最终代价为 。 - 第二个测试数据:涂色
BBBR会得到代价 。但如果涂色第 到第 个格子,结果为BRRR,只有第 个格子颜色错误,惩罚为 ,因此最终代价为 。 - 第三个测试数据:可以涂色第 到第 个格子和第 到第 个格子,所有格子颜色正确,代价为 。
- 第四个测试数据:略。
- 第五个测试数据:所有目标都是红色,不需要任何涂色,代价为 。