比赛 2025.6.21 评测结果 AAAAAAAAAAAAAAAAAAAA
题目名称 简单题www 最终得分 100
用户昵称 徐诗畅 运行时间 2.762 s
代码语言 C++ 内存使用 56.91 MiB
提交时间 2025-06-21 17:21:25
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+5;
int n,t[35][35],ans,pre[35][N],pos[35][35];
char s[N];
int main(){
	freopen("www.in","r",stdin);
	freopen("www.out","w",stdout);
    scanf("%d%s",&n,s+1);
    for(int i=1;i<=n;i++){
        for(int j=0;j<26;j++){
            pre[j][i]=pre[j][i-1];
            if(s[i]-'a'==j)pre[j][i]++;
        }
    }
    for(int i=1;i<=n;i++){
        int r=s[i]-'a';
        for(int l=0;l<26;l++){
            if(l==r)continue;
            int rl=pre[r][i]-pre[l][i];
            if(pre[r][i]-pre[r][pos[r][l]]>0&&pre[l][i]-pre[l][pos[r][l]]>0){
                ans=max(ans,rl-t[r][l]);
            }
            if(rl<t[r][l]){
                t[r][l]=rl;
                pos[r][l]=i;
            }
            int lr=pre[l][i]-pre[r][i];
            if(pre[l][i]-pre[l][pos[l][r]]>0&&pre[r][i]-pre[r][pos[l][r]]>0){
                ans=max(ans,lr-t[l][r]);
            }
            if(lr<t[l][r]){
                t[l][r]=lr;
                pos[l][r]=i;
            }
        }
    }
    printf("%d",ans);
    return 0;
}