#P14874. [ICPC 2020 Yokohama R] Suffixes may Contain Prefixes

    ID: 14793 远端评测题 2000ms 512MiB 尝试: 0 已通过: 0 难度: 7 上传者: 标签>动态规划 DP2020KMP 算法有限状态自动机ICPC横浜

[ICPC 2020 Yokohama R] Suffixes may Contain Prefixes

Description

你正在玩一个关于字符串的游戏。游戏开始时,会给出一个小写字母字符串,称为目标字符串。每位玩家提交一个指定长度的小写字母字符串,称为子弹字符串。得分最高的玩家获胜。

子弹字符串的分数是其所有后缀的分值之和。当子弹字符串为 “b1b2bnb_1 b_2 \dots b_n” 时,从其第 kk 个字符开始的后缀 sks_k1kn1 \le k \le n),即 “bkbk+1bnb_k b_{k+1} \dots b_n”,其分值是该后缀与目标字符串的最长公共前缀的长度。也就是说,如果目标字符串是 “t1t2tmt_1 t_2 \dots t_m”,那么当 tj=bk+j1t_j = b_{k+j-1} 对于 1jp1 \le j \le p 成立,并且满足 p=mp = mk+p1=nk + p - 1 = ntp+1bk+pt_{p+1} \ne b_{k+p} 时,sks_k 的分值就是 pp

你今天必须不惜一切代价赢得比赛,因为 Alyssa 承诺要和获胜者约会!比赛即将开始。赶快编写一个程序,对于给定的目标字符串和子弹长度,找出可达到的最高分数。

Input Format

输入包含两行,为一个测试用例。第一行包含一个非空的目标字符串,由最多 2000 个小写字母组成。第二行包含子弹字符串的长度,是一个不超过 2000 的正整数。

Output Format

输出对于给定的目标字符串和子弹长度,可达到的最高分数。

ababc
6
10
aabaacaabaa
102
251

Hint

对于第一个样例,“ababab” 是最优的子弹字符串。它的六个后缀中,有三个后缀 “ababab”、“abab” 和 “ab” 分别获得了 444422 分,总分为 1010。子弹字符串 “ababca” 可能看起来不错,但其后缀 “ababca”、“abca” 和 “a” 分别得到 552211 分,总和仅为 88