题解:AT_abc381_c [ABC381C] 11/22 Substring
观察发现,每个
先预处理出两个数组
根据数组
然后对于每个
代码:
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define up(l,r,i) for(int i=(l);(i)<=(r);++i)
constexpr int N=2e5+9;
int n;string s;
int a[N],b[N],ans;
int main()
{
cin>>n>>s;
up(0,n-1,i){
if(s[i]=='1')a[i]=a[i-1]+1;
else a[i]=0;
}
for(int i=n-1;~i;--i){
if(s[i]=='2')b[i]=b[i+1]+1;
else b[i]=0;
}
up(0,n-1,i){
if(s[i]=='/'){
ans=max(ans,min(a[i-1],b[i+1])*2+1);
}
}
cout<<ans;
return 0;
}