C. 徐老师的机器命令

    传统题 1000ms 256MiB

徐老师的机器命令

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目描述

最近黄老师到徐老师家做客,但是没想到机器人的控制器居然被徐老师放在了沙发上

于是黄老师一屁股坐在了控制器上,在黄老师做完客离开家里以后

徐老师发现机器人被输入了一连串的指令!

但是幸好的是,机器人收到的指令中只有两种指令:充电(C) 和 移动(M)

这让徐老师相当心疼,因为机器人进行移动是会导致磨损的!

而徐老师当然可以擦除机器人现在收到的指令序列,但是擦除指令也会对机器人造成损伤!

机器人现在的指令序列可以用一个仅包含 CC 和 MM 的字符串表示

由于随机擦除指令会极大的影响机器人的 CPUCPU 使用寿命,所以徐老师只会从指令序列的开头或者结尾擦除指令,不会擦除中间的指令

即如果指令序列为 CCMMCCCCMMCC,徐老师可以擦除开头的指令变成 CMMCC,MMCC,MCC…CMMCC,MMCC,MCC \dots 可以擦除结尾的指令变成 CCMMC,CCMM,CCM,CC…CCMMC,CCMM,CCM,CC \dots,也可以两段都擦除一部分变成 CMMC,MM,M…CMMC,MM,M \dots,当然也可以不擦除任何命令

这样可以让徐老师擦除指令时对机器人的损伤达到最小,但是不可避免的损伤依旧存在两种:

  1. 擦除指令时,每擦除一个 CC 指令会对机器人造成 11 点 CPUCPU 损伤
  2. 剩余的指令集中,每存在一个 MM 指令会对机器人造成 11 点物理损伤

徐老师只会关心两种损伤中比较大的损伤是多少

现在徐老师想知道,对于一个指令序列,怎么擦除指令可以使得机器人最终受到的损伤最小?

输入格式

第一行包含一个整数 TT 表示有多组测试数据

对于每组测试数据包含一行仅由大写字母 C,MC,M 组成的字符串,其中 CC 代表充电指令,MM 代表移动指令

输出格式

对于每组测试数据,输出一行包含一个整数表示最小的损伤

数据范围

数据点编号 字符串长度 lenlen 其他
1∼31 \sim 3 1≤len≤1001 \leq len \leq 100 无
4∼54 \sim 5 1≤len≤200001 \leq len \leq 20000 每个指令序列中不超过 1010 个 CC
6∼76 \sim 7 每个指令序列中不超过 1010 个 MM
8∼108 \sim 10 无

对于 100%100\% 的数据保证,1≤T≤101 \leq T \leq 10

样例输入1

5
CMCCCMCCM
CMMCMMCMMCMMC
MMMMCCCCCC
MMMMM
CCCC

样例输出1

1
3
0
0
0

样例解释1

第一组测试数据:CMCCCMCCM→(CM)CCCMCC(M)CMCCCMCCM \rightarrow (CM)CCCMCC(M) 移除的 CC 有 11 个,剩余的 MM有 11 个,损伤为 max(1,1)=1max(1,1)=1

第二组测试数据:CMMCMMCMMCMMC→(CMMCMM)CMMC(MMC)CMMCMMCMMCMMC \rightarrow (CMMCMM)CMMC(MMC) 移除的 CC 有 33 个,剩余的 MM有 22 个,损伤为 max(3,2)=3max(3,2)=3

第三组测试数据:MMMMCCCCCC−>(MMMM)CCCCCCMMMMCCCCCC -> (MMMM)CCCCCC 移除的 CC 有 00 个,剩余的 MM 有 00 个,损伤为 max(0,0)=0max(0,0)=0

第四组测试数据:MMMMM−>(MMMMM)MMMMM -> (MMMMM) 移除的 CC 有 00 个,剩余的 MM 有 00 个,损伤为 max(0,0)=0max(0,0)=0

第五组测试数据:CCCC−>CCCCCCCC -> CCCC 移除的 CC 有 00 个,剩余的 MM 有 00 个,损伤为 max(0,0)=0max(0,0)=0

以上对于每组测试数据均只提供一种可能方案,方案可能不止一种

24CSP-J秋季普及组模拟赛6

未参加
状态
已结束
规则
IOI
题目
4
开始于
2024-10-2 12:30
结束于
2024-10-12 12:30
持续时间
240 小时
主持人
参赛人数
56