传送门
题意
n个字符串,从第一个里面取任意一个后缀,再从第二个里面取,拼接到第一个后面,以次,求拼接得到的字典序最小的字符串
暴力
#include <bits/stdc++.h>
using namespace std;
const int maxn = 5e5+10;
int n;
int len[maxn];
int main(){
//freopen("in","r",stdin);
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
vector<string> vt;
int t;cin >> t;
while(t--){
int m; cin >> m;
vt.resize(m);
int c = 0;
for(auto &i : vt) cin >> i,len[c++] = i.size();
string ans = "";
for(int i = vt.size()-1; i >= 0; --i) {
int pos = 0;//起始位置为0
n = vt[i].size() - 1;
for(int j = 0; j < len[i] ;j++){
if(vt[i].substr(j,n - j + 1) < vt[i].substr(pos,n - pos + 1))
pos = j;
}
if(!i) {
ans = vt[0].substr(pos,n - pos + 1);break;
}
vt[i - 1] += vt[i].substr(pos,n - pos + 1);
}
cout << ans << endl;
}
return 0;
}