题意:给出一个字符串,给出k,可以向该字符串尾部添加k个字符串,求最长的连续重复两次的子串
没有想出来= =不知道最后添加的那k个字符应该怎么处理
后来看了题解,可以先把这k个字符填成'*',再暴力枚举起点和长度,找出最大的长度
#include<iostream>
#include<cstdio>
#include<cstring>
#include <cmath>
#include<stack>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<algorithm>
using namespace std; typedef long long LL;
const int INF = (<<)-;
const int mod=;
const int maxn=;
char s[maxn];
int len; int main(){
int k;
cin>>s;
int len=strlen(s);
cin>>k;
for(int i=len;i<len+k;i++) s[i]='*'; int ans=-;
len=len+k;
for(int i=;i<len;i++){
for(int j=;*j+i<=len;j++){
int flag=;
for(int t=i;t<i+j;t++){
if(s[t]!=s[t+j]&&s[t+j]!='*') {
flag=;
break;
}
}
if(flag) ans=max(ans,j*);
}
} printf("%d\n",ans);
return ;
}