提供一组基数&模数||如果你WAon60&74
查看原帖
提供一组基数&模数||如果你WAon60&74
1037830
Ooj_bai楼主2024/11/26 22:44
base=131
mod=998244353

如果你使用单向链表预处理可转移的后缀,在一次判断成功的时候要将“下一个也许可行的下标”赋给“表示上一个”的变量。
说的有点抽象。我的例子:

for(int j=1;j<=n;j++){
		for(int k=1;k<=j;k++)last[k]=k-1;
		for(int i=j;i>=1;i--){
			int len=j-i+1,now=0,prv=i;
			for(int k=j;k>=1;){
				if(k>=len&&getbet(k-len+1,k)==getbet(i,j)){
					now++;
					add(k-len+1,j,{i,now});
					prv=k;
					k=last[k-len+1];
				}else{
					k=last[prv]=last[k];
				}
			}
		}
	}

->

for(int j=1;j<=n;j++){
		for(int k=1;k<=n;k++)last[k]=k-1;
		for(int i=j;i>=1;i--){
			int len=j-i+1,now=0,prv=j;
			for(int k=j;k>=1;){
				if(k>=len&&getbet(k-len+1,k)==getbet(i,j)){
					now++;
					add(k-len+1,j,{i,now});
					k=last[k-len+1];
					prv=k;
				}else{
					k=last[prv]=last[k];
				}
			}
		}
	}
2024/11/26 22:44
加载中...