codeforces Round # 187(Div.2) D

来源:互联网 发布:利艾r18漫画艾伦性淘宝 编辑:程序博客网 时间:2024/03/29 09:14

题意就是给两个字符串a,c, 现在将b个a相连得到w, d个c相连得到p,现求最大的q, 使其q个p相连,并且 得到的字符串存在于w中 (字符匹配不用连续)

其实就是问b个a中存在多少个c

先将字符串c预处理, 得到从当前字符开始得到的c的个数 并记录 跳转的下标

for(int i = 0; i < c.length; i++) {    int dd = i;    for(int j = 0; j < a.length; j++) {    if(a[j] == c[dd]) dd++;    if(dd >= c.length) times[i]++, dd = 0;    }    index[i] = dd;    }

然后开始模拟,先看1个a有多少个从当前下标开始得到的c个数, 加上去, 然后跳到跳转的下标, 再看第二个a有多少个从当前下标开始得到的c个数, 加上去 直到b

int sum = 0, dd = 0;  

for(int i = 1; i <= b; i++) sum += times[dd], dd = index[dd];

答案就是sum / d;