P12143 [蓝桥杯 2025 省 A] 好串的数目

题目描述

对于一个长度为 $n$ 的字符串 $s = s_0s_1 \cdots s_{n-1}$ 来说,子串的定义是从中选出两个下标 $l, r$ $(0 \leq l \leq r \leq n-1)$,这之间所有的字符组合起来的一个新的字符串:$s' = s_ls_{l+1} \cdots s_r$ 就是其中一个子串。 现在给出一个只有数字字符 $0 \sim 9$ 组成的数字字符串,小蓝想要知道在其所有的子串中,有多少个子串是好串。一个子串是好串,当且仅当它满足以下两个条件之一: 1. 单字符子串一定是好串,即当子串长度为 $1$ 时,它总是好串; 2. 长度大于 $1$ 时,可以拆分为两个**连续非递减子串**: 一个串 $p = p_0p_1 \cdots p_{k-1}$ 为**连续非递减子串**是指,对于所有 $1 \leq i < k$,满足 $p_i = p_{i-1}$ 或 $p_i = p_{i-1} + 1$。即数字串中的每一个数字,要么等于上一个数字,要么等于上一个数字加 $1$。例如 `12233`、`456` 是连续非递减子串。

输入格式

输入一行包含一个字符串 $s$。

输出格式

输出一行包含一个整数表示答案,即好串的数目。

说明/提示

### 样例说明 1 - 长度为 $1$ 的好串:`1`、`2`、`2`、`5`、`8`,共 $5$ 个; - 长度为 $2$ 的好串:`12`、`22`、`25`、`58`,共 $4$ 个; - 长度为 $3$ 的好串:`122`、`225`,共 $2$ 个; - 长度为 $4$ 的好串:`1225`,共 $1$ 个; 总计 $5 + 4 + 2 + 1 = 12$ 个。 ### 样例说明 2 - 长度为 $1$ 的好串:`9`、`7`、`8`、`5`、`6`,共 $5$ 个; - 长度为 $2$ 的好串:`97`、`78`、`85`、`56`,共 $4$ 个; - 长度为 $3$ 的好串:`978`、`785`、`856`,共 $3$ 个; - 长度为 $4$ 的好串:`7856`,共 $1$ 个; 总计 $5 + 4 + 3 + 1 = 13$ 个。 ### 评测用例规模与约定 - 对于 $20\%$ 的评测用例,$1 \leq n \leq 5$; - 对于 $40\%$ 的评测用例,$1 \leq n \leq 20$; - 对于 $60\%$ 的评测用例,$1 \leq n \leq 100$; - 对于 $70\%$ 的评测用例,$1 \leq n \leq 10^3$; - 对于 $80\%$ 的评测用例,$1 \leq n \leq 10^4$; - 对于所有评测用例,$1 \leq n \leq 10^5$,$s$ 中只包含数字字符 $0 \sim 9$。