关于 KMP 跳 Fail
查看原帖
关于 KMP 跳 Fail
342076
Union_of_Britainschanghang楼主2023/12/25 12:57

本题中我参考了 Flying_hq 的题解实现(核心代码在下面),其统计答案的指针每次只向上跳一次 fail(跳的次数是另一个指针跳等差数列的跳的次数)。我直接把跳 fail 的上限次 rr 数改为 4040 也通过了本题。

这个统计答案的指针为什么不是在等差数列上跳呢/yiw

for(int i=1;i<=40;i++){
		if(r==-1)break;
		int t=0,b=0;
		if(val[r+1].c==c)t=len(r+1);
		if(t>x){
			t=x;b=1;
		}if(t>W){
			(res+=ask(val[r].r+t,t-W))%=mod;
			W=t;
		}if(t==x&&!b){
			P[tp]=r+1;break;
		}
		r=P[r];
	}
2023/12/25 12:57
加载中...