https://codeforces.com/contest/1238/problem/D
题目大意:统计good string的个数,good string的定义,给定的字符串中含有回文段落,
题解:给定的字符串,一共可以分割为n*(n-1)/2个段落,然后只有类似于ABBB,BAAA,AAAB,BBBA不含回文段,其他均含回文段,所以只要统计给定的字符串中其个数,然后相减就可以了
#include<bits/stdc++.h> using namespace std; typedef long long ll; void solve(){ ll n; cin>>n; string s; cin>>s; ll ans=0; ll sum=0; for(ll i=0;i<n;i++){ if(s[i]=='B'){ for(ll j=i-1;j>=0;j--){ if(s[j]=='A') ans++; else break; } for(ll j=i+1;j<n;j++){ if(s[j]=='A') ans++; else break; } } if(s[i]=='A'){ for(ll j=i-1;j>=0;j--){ if(s[j]=='B') ans++; else break; } for(ll j=i+1;j<n;j++){ if(s[j]=='B') ans++; else break; } } } for(ll i=1;i<n;i++){ if(s[i]!=s[i-1]) sum++; } ans-=sum; cout<<n*(n-1)/2-ans<<endl; } int main(){ ios::sync_with_stdio(false); solve(); return 0; }