传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1830
呃,做法不太好说……看代码就明白了
Code:
#include<bits/stdc++.h>
using namespace std;
deque<char>A[3];
int len[3];
int main(){
char c;
for(int i=0;i<3;i++){
cin>>len[i];if(!len[i])continue;c=getchar();
while(!isalpha(c))c=getchar();
while(isalpha(c))A[i].push_back(c),c=getchar();
}while(A[0].size()&&A[1].size()&&A[2].size()
&&A[0].front()==A[1].front()&&A[1].front()==A[2].front())
A[0].pop_front(),A[1].pop_front(),A[2].pop_front();
int tot=A[0].size()+A[1].size()+A[2].size();
int ans=tot;
for(int i=0;i<3;i++)
for(int j=i+1;j<3;j++){
int k=0;
for(;k<min(A[i].size(),A[j].size())&&A[i][k]==A[j][k];k++);
int res=tot-A[i].size()-A[j].size();
res+=k;
res+=A[i].size()-k+A[j].size()-k;
ans=min(ans,res);
}cout<<ans<<endl;
return 0;
}