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

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

题目描述

对于一个长度为 nn 的字符串 s=s0s1sn1s = s_0s_1 \cdots s_{n-1} 来说,子串的定义是从中选出两个下标 l,rl, r (0lrn1)(0 \leq l \leq r \leq n-1),这之间所有的字符组合起来的一个新的字符串:s=slsl+1srs' = s_ls_{l+1} \cdots s_r 就是其中一个子串。

现在给出一个只有数字字符 090 \sim 9 组成的数字字符串,小蓝想要知道在其所有的子串中,有多少个子串是好串。一个子串是好串,当且仅当它满足以下两个条件之一:

  1. 单字符子串一定是好串,即当子串长度为 11 时,它总是好串;
  2. 长度大于 11 时,可以拆分为两个连续非递减子串: 一个串 p=p0p1pk1p = p_0p_1 \cdots p_{k-1}连续非递减子串是指,对于所有 1i<k1 \leq i < k,满足 pi=pi1p_i = p_{i-1}pi=pi1+1p_i = p_{i-1} + 1。即数字串中的每一个数字,要么等于上一个数字,要么等于上一个数字加 11。例如 12233456 是连续非递减子串。

输入格式

输入一行包含一个字符串 ss

输出格式

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

12258
12
97856
13

提示

样例说明 1

  • 长度为 11 的好串:12258,共 55 个;
  • 长度为 22 的好串:12222558,共 44 个;
  • 长度为 33 的好串:122225,共 22 个;
  • 长度为 44 的好串:1225,共 11 个;

总计 5+4+2+1=125 + 4 + 2 + 1 = 12 个。

样例说明 2

  • 长度为 11 的好串:97856,共 55 个;
  • 长度为 22 的好串:97788556,共 44 个;
  • 长度为 33 的好串:978785856,共 33 个;
  • 长度为 44 的好串:7856,共 11 个;

总计 5+4+3+1=135 + 4 + 3 + 1 = 13 个。

评测用例规模与约定

  • 对于 20%20\% 的评测用例,1n51 \leq n \leq 5
  • 对于 40%40\% 的评测用例,1n201 \leq n \leq 20
  • 对于 60%60\% 的评测用例,1n1001 \leq n \leq 100
  • 对于 70%70\% 的评测用例,1n1031 \leq n \leq 10^3
  • 对于 80%80\% 的评测用例,1n1041 \leq n \leq 10^4
  • 对于所有评测用例,1n1051 \leq n \leq 10^5ss 中只包含数字字符 090 \sim 9