1 条题解

  • 0
    @ 2017-10-08 09:53:08

    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<vector>
    using namespace std;
    const int maxn=1000010;
    int n,ans,p[26][26],minv[26][26],sum[26],last[26];
    char s[maxn];
    int main()
    {
    scanf("%d",&n);
    scanf("%s",s+1);
    for (int a=1;a<=n;a++)
    {
    int c=s[a]-'a';
    sum[c]++;
    last[c]=a;
    for (int b=0;b<26;b++)
    if (b!=a && sum[b]) ans=max(ans,max(sum[c]-sum[b]-minv[c][b]-(last[b]==p[c][b]),sum[b]-sum[c]-minv[b][c]-(last[b]==p[b][c])));
    for (int b=0;b<26;b++)
    {
    if (sum[c]-sum[b]<minv[c][b]) minv[c][b]=sum[c]-sum[b],p[c][b]=a;
    if (sum[b]-sum[c]<minv[b][c]) minv[b][c]=sum[b]-sum[c],p[b][c]=a;
    }
    }
    printf("%d\n",ans);

    return 0;
    }

  • 1

信息

难度
9
分类
(无)
标签
(无)
递交数
5
已通过
1
通过率
20%
上传者