MnZn刚学oi,求助
  • 板块CF25E Test
  • 楼主Oct0pus1
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/7/27 16:05
  • 上次更新2023/11/3 07:22:46
查看原帖
MnZn刚学oi,求助
767353
Oct0pus1楼主2023/7/27 16:05

蒟蒻没看出错误,求助

#include<bits/stdc++.h>
using namespace std;
const int L=2e5+10;
string str[3];
int ans=INT_MAX,pi[L];
inline int calc(void){
	int ret=str[0].size()+str[1].size()+str[2].size();
	memset(pi,0,sizeof(pi));
	string ss=str[1]+"#"+str[0];int len=ss.size();
	for(int i=1,j=0;i<len;i++){
		while(j && ss[i]!=ss[j])j=pi[j-1];
		if(ss[i]==ss[j])j++;
		pi[i]=j;
	}
	ret-=pi[len-1];
	ss=str[2]+"#"+str[0].substr(0,str[0].size()-pi[len-1])+str[1];len=ss.size();
	memset(pi,0,sizeof(pi));
	for(int i=1,j=0;i<len;i++){
		while(j && ss[i]!=ss[j])j=pi[j-1];
		if(ss[i]==ss[j])j++;
		pi[i]=j;
	}
	ret-=pi[len-1];
	return ret;
}
signed main(){
	ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
	cin>>str[0]>>str[1]>>str[2];
	ans=min(ans,calc());
	swap(str[1],str[2]);
	ans=min(ans,calc());
	swap(str[0],str[1]);
	ans=min(ans,calc());
	swap(str[1],str[2]);
	ans=min(ans,calc());
	swap(str[0],str[1]);
	ans=min(ans,calc());
	swap(str[1],str[2]);
	ans=min(ans,calc());
	cout<<ans;
	return 0;
}
2023/7/27 16:05
加载中...