求助各位dalao
  • 板块CF25E Test
  • 楼主Zwaire
  • 当前回复7
  • 已保存回复7
  • 发布时间2021/5/13 14:01
  • 上次更新2023/11/4 23:19:52
查看原帖
求助各位dalao
333580
Zwaire楼主2021/5/13 14:01
#include<bits/stdc++.h>

using namespace std;

string s1,s2,s3;
string a[10];
int nxt[10][1000100];
int maxn=10000001,tot,ans[10];

int main()
{
	cin>>s1>>s2>>s3;
	
	a[1]=' '+s1+s2;
	a[2]=' '+s2+s1;
	a[3]=' '+s2+s3;
	a[4]=' '+s3+s2;
	a[5]=' '+s1+s3;
	a[6]=' '+s3+s1;
	for(int i=1;i<=6;i+=2)
	{
		int k=0;
		for(int j=2;a[i][j];j++)
		{	
			while(k!=0 && a[i][j] != a[i][k+1]) k=nxt[i][k];
			if(a[i][j] == a[i][k+1]) k++;
			nxt[i][j] = k;
			
		}
		k=0;
		for(int j=2;a[i+1][j];j++)
		{
			while(k!=0 && a[i+1][j] != a[i+1][k+1]) k=nxt[i+1][k];
			if(a[i+1][j] == a[i+1][k+1]) k++;
			nxt[i+1][j] = k;
			
		}
//		maxn[++tot]=max(nxt[i+1][a[i+1].size() -1],nxt[i][a[i].size()-1]);cout<<"ASD"<<endl;
	}	
	int n=s1.size()+s2.size()+s3.size();
	ans[1]=n-nxt[1][a[1].size() -1]-nxt[3][a[3].size() -1];
	ans[2]=n-nxt[5][a[5].size() -1]-nxt[4][a[4].size() -1];
	ans[3]=n-nxt[3][a[3].size() -1]-nxt[6][a[6].size() -1];
	ans[4]=n-nxt[2][a[2].size() -1]-nxt[5][a[5].size() -1];
	ans[5]=n-nxt[6][a[6].size() -1]-nxt[1][a[1].size() -1];
	ans[6]=n-nxt[4][a[4].size() -1]-nxt[2][a[2].size() -1];
	for(int i=1;i<=6;i++)
	{
		maxn=min(maxn,ans[i]);
	}
	cout<<maxn<<endl;
}

样例过了,但不知道哪错了。。。。

2021/5/13 14:01
加载中...