警示后人
查看原帖
警示后人
924880
keshuhan楼主2025/1/23 15:07

在统计文章时,一定不要把单词直接拼接在一起,可以在拼接时加一些特殊符号,例如:

cin>>n;
for(int i=1;i<=n;i++){
	cin>>x[i];//输入
}
string g="",r="{";
//g为统计文章的字符串
//r为特殊符号
for(int i=1;i<=n;i++){
	g+=r;
	g+=x[i];
}

并且,如果使用AC自动机,记得在find函数中特判一下特殊符号,记得变量要清零,如:

void find(string s){
	int p=1;
	for(int i=0;s[i];i++){
		if(s[i]=='{'){//特判
			p=1;//清零,由于我是从1开始遍历的,所以将p赋值为1
			continue;
		}
		int c=s[i]-'a';
		p=ch[p][c];
		d[p]++;
	}
	for(int i=cnt;i>=1;i--){
		d[fail[qi[i]]]+=d[qi[i]]; //统计个数
	}
}
2025/1/23 15:07
加载中...