为什么这样会超时?
查看原帖
为什么这样会超时?
136516
君と僕のNOIP楼主2021/8/22 14:16

像这样直接写就会超时

for(int i=2;i<=n;i++){
		j=kmp[i]
		while((j<<1)>i)j=kmp[j];
		ans=(((num[j]+1)%mod)*(ans%mod))%mod;
	}

这样就好了

for(int i=2;i<=n;i++){
		while(j&&str[j+1]!=str[i])
		  j=kmp[j];
		if(str[j+1]==str[i])j++;
		while((j<<1)>i)j=kmp[j];
		ans=(((num[j]+1)%mod)*(ans%mod))%mod;
	}

dalao们能教教我为什么会这样吗

2021/8/22 14:16
加载中...