求两个字符串拼接最短长度求助
  • 板块学术版
  • 楼主紊莫turtle
  • 当前回复5
  • 已保存回复5
  • 发布时间2023/1/17 14:39
  • 上次更新2023/10/24 03:51:17
查看原帖
求两个字符串拼接最短长度求助
443675
紊莫turtle楼主2023/1/17 14:39

就是比如有 abababababccc,拼起来就是 abababccc

好吧其实是CF25E不会调。

int gg(int sa,int sb){
	string a=s[sa],b=s[sb];
	int n=a.size()-1,m=b.size()-1,j=0;
	F(i,1,n){
		while(j&&a[i]!=b[j+1]) j=nxt[sb][j];
		if(a[i]==b[j+1]) j++;
		if(j==m||i+j>=n) return j;
	}return 0;
}
void init(){
	F(k,1,3){
		int n=s[k].length()-1,j=0;
		F(i,2,n){
			while(j&&s[k][i]!=s[k][j+1]) j=nxt[k][j];
			if(s[k][i]==s[k][j+1]) j++;
			nxt[k][i]=j;
		}
	}
}

init求了KMP的next数组。gg返回最长的公共部分。
但是除了样例都WA。

2023/1/17 14:39
加载中...