码迷,mamicode.com
首页 > 其他好文 > 详细

codeforces 451D Count Good Substrings

时间:2014-08-02 20:55:04      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   os   io   for   ar   div   

题意:给定一个字符串,求有多少个奇数子串和多少偶数子串为 “回文串”   这边回文串很特殊之含有  ab  两种字母  而且  相邻的字母相同则消去一个  一直到不存在相邻的相同。

思路:  在这种串中 ,消到最后 一定是   abababababa。。。   或者 bababababab。。。  那么 只要头尾一样 那么这个串 一定是 回文串。

那么 只需要 统计下 奇数位上 和 偶数位上a  b个数就能直接计算。  一个在奇数位一个在偶数为  长度位偶数,  两个都在  奇数位 或者偶数位 则长度为奇数。

 

#include <iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
#include<cmath>
#define LL long long
#define f(x) ((x)*(x+1)/2)
using namespace std;
char s[100050];
int main() {
    LL odda,oddb,evena,evenb;
    odda=oddb=evena=evenb=0;
    scanf(" %s",s);
    int len=strlen(s);
    for(int i=0;i<len;++i)
    {
        if(s[i]==a)
        {
            if(i&1)
                odda++;
            else
                evena++;
        }
        else
        {
            if(i&1)
                oddb++;
            else
                evenb++;
        }

    }
    LL ans1=odda*evena+oddb*evenb;
    LL ans2=f(odda)+f(oddb)+f(evena)+f(evenb);
    printf("%I64d %I64d\n",ans1,ans2);
    return 0;
}

 

codeforces 451D Count Good Substrings,布布扣,bubuko.com

codeforces 451D Count Good Substrings

标签:style   blog   color   os   io   for   ar   div   

原文地址:http://www.cnblogs.com/L-Ecry/p/3887398.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!