/*
自己想了一个比较复杂的dp过程,有四个状态...
然后看了一下rank1的代码.感觉智商被碾压了.
考虑对a,b在奇偶位置上进行计数
则长度为奇数的就是在同一类里面任意选两个(包括自身)
长度为偶数的就需要奇偶对应着选
*/
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
char s[100100];
#define LL long long
LL cnt[2][2];
LL calc(LL v)
{
return v*(v+1)/2;
}
int main()
{
scanf("%s",s);
int len = (int) strlen(s);
for(int i=0;i<len;++i)
{
++cnt[i&1][s[i]-'a'];
}
LL ans0,ans1;
ans0 = cnt[0][0]*cnt[1][0] + cnt[0][1]*cnt[1][1];
ans1 = calc(cnt[0][0]) + calc(cnt[0][1]) + calc(cnt[1][0]) + calc(cnt[1][1]);
printf("%lld %lld\n",ans0,ans1);
return 0;
}
451 D. Count Good Substrings
最新推荐文章于 2021-09-10 17:09:09 发布