定义 conn(s,n)conn(s,n) 为 n 个字符串 s 首尾相接形成的字符串,例如:
conn(“abc”,2)=”abcabc”
称字符串 a 能由字符串 b 生成,当且仅当从字符串 b 中删除某些字符后可以得到字符串 a。
例如“abdbec”可以生成“abc”,但是“acbbe”不能生成“abc”。
给定两个字符串 s1 和 s2,以及两个整数 n1 和 n2,求一个最大的整数 m,满足conn(conn(s2,n2),m)能由 conn(s1,n1)生成。
输入格式
输入包含多组测试数据。
每组数据由2行组成,第一行包含s2,n2,第二行包含s1,n1。
输出格式
对于每组数据输出一行表示答案m。
数据范围
s1 和 s2 长度不超过100,n1 和 n2 不大于 106。
输入样例:
ab 2
acb 4
acb 1
acb 1
aa 1
aaa 3
baab 1
baba 11
aaaaa 1
aaa 20
输出样例:
2
1
4
7
12
题意:求最大的整数m,使得(n1个s1) 的子序列中能找到(m个n2个s2),即:(m个n2个s2)能由(n1个s1)生成。
思路:
构造一个由无限个s1依次首尾相连的串
用f[i][j]表示以s1[i]为起点,包含2^j个s2的最短的一段的步数 (因为要使个数最多,所以每一段要尽可能短)
因为在求个数时,需要找到每次求完一段完成的终点作为下一次