CFCF2196E2.Fuzzy Concatenation (Hard version)

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

这是这个问题的难度较高的版本。不同之处在于本版本中 n5105,m5104n \le 5 \cdot 10^{5}, m \le 5 \cdot 10^{4}。只有在你解决了所有版本的问题后,才能进行 hack。

现在有两个字符串 sstt,它们都只包含小写拉丁字母。同时你还有一个空字符串 pp

你可以进行如下操作,每次操作包括几个阶段:

  • 任选两个整数 llrr1lrs1 \le l \le r \le |s|);
  • 取出子串 sl,,srs_l,\ldots, s_r,并将其添加到字符串 pp 的末尾;
  • pp 的最后 rl+1r - l + 1 个字符中,至多可以将其中的一个字符改成任意的小写拉丁字母。

例如,如果字符串 $s = $ "dhhtyhwbsl",$p = $ "",你可以选择 l=3,r=6l = 3, r = 6,把 "htyh" 添加到 pp 的末尾,然后把字符 "y" 改成 "a",这样 pp 就变成了 "htah"。

你的任务是确定使得字符串 pp 恰好等于 tt 所需的最少操作次数。

输入格式

每个测试点包含多组测试用例。第一行包含测试用例数量 tt1t1041 \le t \le 10^4)。接下来是每组测试用例的描述。

每组测试用例的第一行包含两个整数 nnmm1n5105,1m51041 \le n \le 5 \cdot 10^{5}, 1 \le m \le 5 \cdot 10^{4})——字符串 sstt 的长度。

接下来一行给出长度为 nn 的字符串 ss,仅包含小写字母。

再下一行给出长度为 mm 的字符串 tt,也只包含小写字母。

保证所有测试用例中 nn 的总和不超过 51055 \cdot 10^{5}mm 的总和不超过 51045 \cdot 10^{4}

输出格式

对于每个测试用例,输出一个整数,表示最少操作次数。

输入输出样例

  • 输入#1

    4
    1 1
    a
    b
    5 5
    aaaaa
    abzba
    10 13
    dhhtyhwbsl
    htahbsehtyhzb
    7 2
    contest
    on

    输出#1

    1
    3
    3
    1

说明/提示

在第一个测试用例中,你可以从字符串 ss 中取出子串 "a",将其中唯一的字母修改成 "b",并将其添加到 pp 的末尾,这样 pp 就等于 tt 了。

在第二个测试用例中,可以通过 33 次操作生成 tt

ab+z+ba\mathtt{a\color{red}{b}} + \mathtt{\color{red}{z}} + \mathtt{\color{red}{b}a}

被修改的字符用红色标出。

在第三个测试用例中,tt 可以这样获得:

htah+bse+htyhzb\mathtt{ht\color{red}{a}h} + \mathtt{bs\color{red}{e}} + \mathtt{htyh\color{red}{z}b}

首页