蒟蒻请教kmp时间复杂度
查看原帖
蒟蒻请教kmp时间复杂度
299810
issue_is_fw楼主2021/2/14 11:55

假如一个串有10610^6aa

那么每一次跳kmpkmp都只让jj减少一

while( (j<<1)>i )	j = kmp[j];

那每次都这么跳不会超时吗...

毕竟每次都要跳i2\frac{i}{2}左右次啊

		for(int i=2,j=0;i<=n;i++)
		{
			while( j&&a[i]!=a[j+1] )	j = kmp[j];
			if( a[i]==a[j+1] )	j++;	
			while( (j<<1)>i )	j = kmp[j];
			ans = ans*(num[j]+1)%mod;
		}
2021/2/14 11:55
加载中...