B. [CSP-X 2025] IOI串

    传统题 1000ms 256MiB

[CSP-X 2025] IOI串

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

IOI串(ioi)

【题目描述】

小明对字符串"IOI"怀有特殊的感情,他定义一种由大写英文字母 'I' 和 'O' 构成的字符串为“好串”,当且仅当它可以被划分为三个非空部分,依次为:

  • 第一部分:连续若干个 'I'
  • 第二部分:连续若干个 'O'
  • 第三部分:连续若干个 'I'

例如: "IIIOOIII" 是一个好串,"IOI"也是一个好串; "OIOI","IIO" 都不是好串。

现在,小明有一个长度为n的字符串S,且S仅包含字符 'I' 和 'O'。 他可以进行任意次修改操作,每一次操作可将字符串中某一个位置的字符替换成另一个字符(即把 'I' 改为 'O',或把 'O' 改为 'I')。

例如: 当S="IIIOOOIOII"时,根据上述定义,S不是一个“好串”,但小明可以有多种方法通过修改操作把S变为“好串”:

  • 方法1:把第7个字符 'I' 改为 'O',经过1次操作得到 "IIIOOOOII";
  • 方法2:分别把第8个和第9个字符 'O' 改为 'I',经过2次操作得到 "IIIOOOIIIII"。

你的任务:至少经过1次修改操作才能把上面的字符串S变为“好串”。 请你根据小明的字符串S,计算至少需要进行多少次修改操作,才能将字符串S变为一个“好串”。如果S已经是一个“好串”,输出0。

【输入格式】

从文件 ioi.in 中读入数据。 一行,仅由 'I' 和 'O' 两种字符组成的字符串S。

【输出格式】

输出到文件 ioi.out 中。 一行,包含一个整数,表示把字符串S修改为“好串”需要的最少的修改次数。

IOI串(ioi) - 样例与数据范围

【样例 1 输入】

IIIOOOIOII

【样例 1 输出】

1

【样例 2 输入】

IOOIOOIOOOII

【样例 2 输出】

2

【样例 3】

见选手目录下的 ioi/ex_ioi3.in 与 ioi/ex_ioi3.ans。

【样例 4】

见选手目录下的 ioi/ex_ioi4.in 与 ioi/ex_ioi4.ans。

【数据范围】

对于所有的数据,字符串的长度 n 满足 3n5×1033 \leq n \leq 5 \times 10^3,且字符串中仅包含大写英文字母'I'和'O'。

测试点 n ≤ 特殊性质
1 1000 字符全部为'I'
2 字符全部为'O'
3~13 200
14~20 5 × 10³

CSP-X 2025 (官方数据)

未参加
状态
已结束
规则
IOI
题目
4
开始于
2025-11-7 18:30
结束于
2025-11-16 2:30
持续时间
200 小时
主持人
参赛人数
6