4485:雪国键盘侠
文件提交:无需freopen
内存限制:128 MB
时间限制:1.000 S
评测方式:普通裁判
金币值:
命题人:
提交:0
解决:0
题目描述
# 雪国键盘侠
## 题目背景
在遥远的雪国,键盘侠们正在参加一年一度的打字比赛。比赛场地是一个巨大的冰面,上面有 $n$ 个格子排成一排,每个格子上都放着一个字母键。键盘侠小冰需要从第 $1$ 个格子出发,依次按下所有格子上的字母键,最终到达第 $n$ 个格子。
## 题目描述
每个格子 $i$ 上有一个小写字母 $c_i$。小冰在移动时,如果从格子 $i$ 移动到格子 $j$ ($i < j$),他会打出从 $i$ 到 $j$ 所有格子上的字母(包括 $i$ 和 $j$),形成一个字符串。
但是,小冰的键盘有一个特殊规则:**连续打出的相同字母会被合并成一个**。例如,打出的字母序列是 `"a a b b a"`,实际显示为 `"a b a"`。
小冰想知道,当他从第 $1$ 个格子出发,必须经过所有格子(即依次访问格子 $1, 2, ..., n$)时,最终屏幕上显示的结果字符串**最短可能长度**是多少?
## 输入格式
输入共两行。
第一行一个整数 $n$,表示格子的数量。
第二行一个长度为 $n$ 的字符串 $s$,其中第 $i$ 个字符 $s_i$ 表示格子 $i$ 上的字母。字符串仅由小写英文字母组成。
## 输出格式
输出一个整数,表示最终屏幕上显示的结果字符串的最短可能长度。
## 样例
输入:
```
7
aabbbca
```
输出:
```
4
```
解释:
格子上的字母依次为 `a, a, b, b, b, c, a`。
小冰必须依次经过所有格子,所以他会打出所有字母 `a a b b b c a`。
根据规则,连续相同字母合并:`a a` -> `a`,`b b b` -> `b`,`c` -> `c`,最后的 `a` 单独。
合并后得到 `a b c a`,长度为 4。
## 数据范围
- 对于 30% 的数据:$1 \le n \le 100$,且字符串中只包含字母 `a` 和 `b`。
- 对于 60% 的数据:$1 \le n \le 1000$。
- 对于 100% 的数据:$1 \le n \le 10^5$。
## 提示
小冰必须按顺序访问所有格子,所以他会打出整个字符串 $s$。问题转化为:给定字符串 $s$,将其中**所有连续出现的相同字母**视为一个字母,求这样处理后字符串的长度。