#P1369. Append

Append

P1369. 编码分割问题

题目描述

考虑一种著名压缩算法中使用的编码方案。假设我们只编码小写字母序列。每个字符序列可以被编码为一个由(pi,ri)(p_i, r_i)对组成的序列,其中:

  • pi=0p_i = 0时,rir_i是一个字符
  • pi>0p_i > 0时,rir_i是一个满足0<ripi0 < r_i \leq p_i的整数

解码过程如下:

  1. 对于(0,ri)(0, r_i):直接将字符rir_i添加到已解码序列末尾
  2. 对于(pi,ri)(p_i, r_i)pi>0p_i > 0):从当前序列末尾向前数pip_i个位置开始,复制rir_i个字符添加到序列末尾

例如,编码序列(0,a),(1,1),(0,b),(3,3),(3,3),(3,2),(0,c)(0,a),(1,1),(0,b),(3,3),(3,3),(3,2),(0,c)的解码过程:

  1. (0,a)(0,a) → "a"
  2. (1,1)(1,1) → "aa"(复制最后1个字符1次)
  3. (0,b)(0,b) → "aab"
  4. (3,3)(3,3) → "aabaab"(从倒数第3位开始复制3个字符)
  5. (3,3)(3,3) → "aabaabaab"
  6. (3,2)(3,2) → "aabaabaabaa"(复制倒数第3位开始的2个字符)
  7. (0,c)(0,c) → "aabaabaabaac"

给定编码序列CwC_w,问题要求计算有多少种方式可以将其分割为CuCvC_uC_v,使得:

  1. 解码后的w=uvw=uvuuvv都不为空)
  2. CuC_uCvC_v都是有效的编码序列

输入格式

  • 由多个块组成,每个块描述一个编码序列CwC_w
  • 每行包含:
    • 两个整数pi rip_i\ r_iripi<1000r_i \leq p_i < 1000),或
    • "0"后跟一个字符
  • 每个块以空行结束

输出格式

  • 对于每个输入块,输出满足条件的分割方式数量

样例输入

0 a
1 1
0 b
3 3
3 3
3 2
0 c

样例输出

1

题目来源

Central Europe 1997