A94824.净化传输信号

普及+/提高

通过率:0%

时间限制:1.00s

内存限制:128MB

题目描述

通信卫星接收到了一串长度为 NN 的原始信号字符串 source
经过初步分析,我们识别出了其中包含的一段核心指令字符串 patternpattern 保证是 source 的子序列)。

为了优化存储空间,系统标记了一组“冗余下标” targetIndices
你可以对 source 进行“清理操作”:

  1. 每次操作可以删除 source 中下标位于 targetIndices 中的任意一个字符。
  2. 删除操作后,剩余的字符串必须仍然包含 pattern 作为其子序列(字符顺序不变)。
  3. 操作不改变字符在原始字符串中的相对下标判定(即下标是固定的,不会因为前面的字符被删除了而改变后续字符的下标索引)。

请问:在保证 pattern 完整性的前提下,你最多可以执行多少次删除操作?

输入格式

输入共三部分:

  1. 第一行包含一个字符串 source
  2. 第二行包含一个字符串 pattern
  3. 第三行包含一个整数 KK,表示可删除下标数组的长度。
  4. 第四行包含 KK 个整数,表示 targetIndices 的元素,保证按升序排列且互不相同。

输出格式

输出一个整数,表示最多可以删除的字符数量。

输入输出样例

  • 输入#1

    abbaa
    aba
    3
    0 1 2

    输出#1

    1
  • 输入#2

    bcda
    d
    2
    0 3

    输出#2

    2

说明/提示

样例解释

样例 #1 解释:

  • source = "abbaa", pattern = "aba", 可删下标 = {0, 1, 2}
  • 假如删除下标 0 ('a'),剩余 "bbaa",包含 "aba"(子序列),操作合法。
  • 假如删除下标 1 ('b'),剩余 "abaa",包含 "aba",操作合法。
  • 假如删除下标 2 ('b'),剩余 "abaa",包含 "aba",操作合法。
  • 但如果你试图同时删除下标 0 和 1(变为 "baa"),则不再包含 "aba"。
  • 最多只能删 1 个。

样例 #2 解释:

  • 删除下标 0 ('b') 和下标 3 ('a')。
  • 剩余 "cd",其中 "d" 是 pattern "d" 的子序列。
  • 删除了 2 个字符,这是最大值。

数据范围

  • 1N30001 \le N \le 3000 (source 长度)
  • 1MN1 \le M \le N (pattern 长度)
  • targetIndices 中的元素在 [0,N1][0, N-1] 范围内。
  • 保证 patternsource 的子序列。

数据点分布:

  • 测试点 1-5:N20N \le 20
  • 测试点 6-15:N500N \le 500
  • 测试点 16-25:N3000N \le 3000
首页