CF D
  • 板块学术版
  • 楼主LargeRice16pro
  • 当前回复4
  • 已保存回复4
  • 发布时间2024/3/16 00:35
  • 上次更新2024/3/16 01:28:13
查看原帖
CF D
225100
LargeRice16pro楼主2024/3/16 00:35

不知道为什么,反之我是真没思路。

求求思路。

但是我赛时写了一个循环剪枝乱搞过了这题,跑的还蛮快。求 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;
}
2024/3/16 00:35
加载中...