zoukankan      html  css  js  c++  java
  • Cow and Message

    题目链接:http://codeforces.com/contest/1307/problem/C

    题意:给你一个字符串,让你求出该字符串的出现最多次的子序列的次数,且子序列的每个序号要是等差数列。

    思路:因为子序列的每个序号要是等差数列,所以只要考虑只有一个和两个的子序列,一个的话就是出现最多的字符次数,两个的话可以先预处理下,然后再枚举所有的两个的子序列,             就可以了。

    #include<stdio.h>
    #include<iostream>
    #include<string.h>
    #include<math.h>
    #include<string>
    #include<algorithm>
    #include<queue>
    #include<map>
    typedef long long ll;
    using namespace std;
    char a[200005];
    ll b[200005][30];
    int main()
    {
        scanf("%s",a+1);
        ll n=strlen(a+1);
        for(int i=1;i<=n;i++)
        {
            int x=a[i]-'a';
            for(int j=0;j<26;j++)
                b[i][j]=b[i-1][j];
            b[i][x]++;
        }
        ll ma=0;
        for(int i=0;i<26;i++)
            ma=max(ma,b[n][i]);
        ll ans=ma;
        ans=max(ans,ma*(ma-1)/2);
        for(int i=0;i<26;i++)
            for(int j=0;j<26;j++)
        {
            if(i==j)
                continue;
            ll sum=0;
            for(int k=n;k>=1;k--)
            {
                if(a[k]==j+'a')
                    sum=sum+b[k-1][i];
            }
            ans=max(ans,sum);
        }
        printf("%lld
    ",ans);
    }
  • 相关阅读:
    codeforces-1194 (div2)
    单链表1(悲剧文本)
    迷宫(深度搜索)
    皇后问题
    关键路径
    [NOI2015]软件包管理器
    [USACO13JAN]岛游记Island Travels
    仓鼠找sugar
    [SHOI2012]魔法树
    [HEOI2016/TJOI2016]树
  • 原文地址:https://www.cnblogs.com/zcb123456789/p/12329039.html
Copyright © 2011-2022 走看看