#P12667. [KOI 2023 Round 2] 傻瓜锁
[KOI 2023 Round 2] 傻瓜锁
题目背景
试题来源:https://koi.or.kr/archives/。中文翻译做了少量本土化修改。
按照署名—非商业性使用—相同方式共享 4.0 协议国际版进行授权。
题目描述
KOI 国即将举办一场“快速解锁比赛”。你作为参赛者,正在练习解锁的能力。本次比赛所用的锁因为特性特殊,被称为傻瓜锁。
傻瓜锁可以用一个由小写英文字母组成的字符串 表示。你可以在一次操作中选定 中的某个字符,将其修改为字母表顺序中相邻的字母。例如,当傻瓜锁的当前状态为 "ioiaa"
时,你可以进行以下 8 种操作:
- 将第 1 个字符
'i'
改为'h'
。 - 将第 1 个字符
'i'
改为'j'
。 - 将第 2 个字符
'o'
改为'n'
。 - 将第 2 个字符
'o'
改为'p'
。 - 将第 3 个字符
'i'
改为'h'
。 - 将第 3 个字符
'i'
改为'j'
。 - 将第 4 个字符
'a'
改为'b'
。 - 将第 5 个字符
'a'
改为'b'
。
傻瓜锁具有如下特性:当字符串中字符按照字母表升序排列时,锁就被解开了。也就是说,对于任意的 (),必须有 。
例如,"aabbcc"
、"eel"
、"a"
、"zzzzz"
都是升序排列的;而 "lee"
、"ccbbaa"
、"koi"
则不是升序排列的。
定义一个傻瓜锁当前状态为字符串 时,将其解锁所需的最小操作次数,称为该字符串 的难度。你已经在练习如何快速计算 的难度。
现在,你打算通过更难的练习方式来提升自己。
初始时,给定傻瓜锁的状态为字符串 ,长度为 。接下来,你将接收到 个更新操作(query),每次操作修改 中的某一位字符。每次操作由一个整数 ()和一个小写字母 组成,表示将 中第 个字符改为 。这些更新操作需要按顺序依次应用。
你的任务是:首先输出初始字符串 的难度,之后每处理完一个更新操作,输出更新后字符串 的难度。
输入格式
第一行输入字符串 。
第二行输入整数 ,表示操作数量。
若 ,接下来 行,每行输入两个值 ,表示将 的第 个字符改为字符 ,两者用空格分隔。
输出格式
总共需输出 个整数,依次为:
- 第 1 行输出初始字符串 的难度;
- 若 ,接下来的 行,依次输出每次更新操作后当前字符串 的难度。
ababba
5
1 b
3 b
2 a
2 b
5 a
2
2
1
2
1
2
acabed
5
1 c
2 a
3 d
4 c
5 a
3
4
3
5
4
5
acaykp
6
1 c
2 a
5 a
6 k
3 p
4 c
16
16
16
26
26
31
17
zaire
1
5 r
38
25
提示
限制条件
- 由小写英文字母组成。
- 的长度 满足 。
- 。
- 。
- 为小写英文字母,且保证 不等于更新前 的第 个字符。
- “小写英文字母”指的是
"abcdefghijklmnopqrstuvwxyz"
。
子任务
- (7 分),,且 仅由
'a'
、'b'
组成。 - (6 分), 仅由
'a'
、'b'
组成,更新后依然保持只含'a'
、'b'
。 - (5 分), 仅由
'a'
、'b'
、'c'
组成,更新后依然保持只含这三种字符。 - (4 分), 仅由
'a'
、'b'
、'c'
、'd'
、'e'
组成,更新后依然保持如此。 - (3 分)。
- (12 分) 仅由
'a'
、'b'
组成,更新后依然保持如此。 - (10 分) 仅由
'a'
、'b'
、'c'
组成,更新后依然保持如此。 - (8 分) 仅由
'a'
、'b'
、'c'
、'd'
、'e'
组成,更新后依然保持如此。 - (45 分)无附加限制。
翻译由 ChatGPT-4o 完成