不知道为什么,反之我是真没思路。
求求思路。
但是我赛时写了一个循环剪枝乱搞过了这题,跑的还蛮快。求 hack。我觉得不对
#include<bits/stdc++.h>
#pragma GCC optimize ("O2")
// #define int long long
#define ldb long double
#define For(i,a,b) for(i=a;i<=b;i++)
#define FOR(i,a,b) for(i=a;i>=b;i--)
using namespace std;
const int N=5e5+10;
int n;
string a;
void solve(){
int i,j,k,ans=0;
For(i,1,n){
For(j,i+max(1,ans/2)-1,n){
if(n-j<j-i+1) break;
For(k,i,j){
if(a[k]!='?'&&a[j+k-i+1]!='?'){
if(a[k]!=a[j+k-i+1]) break;
}
}
if(k>j) ans=max(ans,2*(j-i+1));
}
}
cout<<ans<<'\n';
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
int t;
cin>>t;
while(t--){
cin>>a;
n=a.size();
a=" "+a;
solve();
}
return 0;
}