#lg6878. [JOI 2020 Final] JJOOII 2
[JOI 2020 Final] JJOOII 2
P6878 [JOI 2020 Final] JJOOII 2
题目描述
定义有连续 个 和连续 个 和连续 个 组成的字符串为 阶 JOI 串。
比如, 为 阶 JOI 串,但是,注意要有顺序,比如 就不是 阶 JOI 串。
现在,给定一个长度为 的字符串 ,可以对他进行 种操作:
- 操作 :删除 开头的字符
- 操作 :删除 结尾的字符
- 操作 :删除 除了开头和结尾之外的一个字符
我们要通过这些操作让 变为 阶 JOI 串。
但是,我们想让操作 尽量的少。
所以我们想知道,变为 阶 JOI 串操作 最少需要进行多少次?
如果不能变为 阶 JOI 串,那么输出 。
输入格式
第一行两个整数 代表字符串长度和要构造的 JOI 串的阶数。
第二行 个字符代表字符串 。
输出格式
一行一个整数代表操作 的最小进行次数。
如果不能变为 阶 JOI 串,那么输出 。
输入输出样例 #1
输入 #1
10 2
OJIJOIOIIJ
输出 #1
2
输入输出样例 #2
输入 #2
9 3
JJJOOOIII
输出 #2
0
输入输出样例 #3
输入 #3
9 1
IIIOOOJJJ
输出 #3
-1
说明/提示
样例 1 解释
- 进行一次操作 ,变为 。
- 进行一次操作 ,变为 。
- 进行一次操作 ,删掉字符 ,变为 。
- 进行一次操作 ,删掉字符 ,变为 。
样例 2 解释
已经是 阶 JOI 串了,所以不需要进行操作。
样例 3 解释
无法变为 阶 JOI 串,无解。
数据规模与约定
本题采用捆绑测试。
- Subtask 1(1 pts):。
- Subtask 2(12 pts):。
- Subtask 3(87 pts):无特殊限制。
对于 的数据:
- 。
- 。
- 只包含 ,, 且长度为 。
说明
翻译自 第19回日本情報オリンピック 本選 B JJOOII 2。
#3253. 「JOI 2020 Final」JJOOII 2
标签: 传统 | 时间限制: 2000 ms | 内存限制: 256 MiB |
题目描述
译自 JOI 2020 Final T2「JJOOII 2 / JJOOII 2」
比太郎收到了一个长度为 的字符串 作为他的生日礼物,且这个字符串仅由 组成。
对于所有正整数 ,若一个字符串仅由 个连续的 , 个连续的 和 个连续的 顺次连接而成,则我们称这个字符串为 级 JOI-串。
例如, 就是一个 级 JOI-串。
比太郎热衷于构造 级 JOI-串,于是他打算通过以任意顺序使用以下三个操作任意次来将字符串 构造为一个 级 JOI-串:
- 删除 的开头字符。
- 删除 的结尾字符。
- 删除 的一个非开头且非结尾的字符。
由于操作 十分耗时,比太郎想要尽可能少地使用操作 。
请对于给定的长度为 的字符串 和一个正整数 ,输出将其构造为 级 JOI-串所需要的最少的操作 的次数。
若无解,请输出 。
输入格式
第一行,两个正整数 。
第二行,一个字符串 。
输出格式
一行,一个整数,表示操作 的最少次数或 。
样例 1
输入
10 2
OJIJOIOIIJ
输出
2
你可以通过按以下顺序执行操作来将 构造为一个 级 JOI-串:
- 使用操作 , 变为 。
- 使用操作 , 变为 。
- 使用操作 删除第 个字符, 变为 。
- 使用操作 删除第 个字符, 变为 。
可以证明没有更优解,故输出 。
样例 2
输入
9 3
JJJOOOIII
输出
0
显然,在这个样例中你甚至不需要任何操作。
样例 3
输入
9 1
IIIOOOJJJ
输出
-1
显然,在这个样例中你的一切操作都是无用功。
数据范围与提示
对于所有测试数据, 是一个仅有 组成的字符串。
| 子任务编号 | 分值 | |
|---|---|---|