codeforces 1238D 【思维】

题目分析

正难则反
考虑不是GOOD string的情况,只有
ABB…BBB
BAA…AAA
AAA…AAB
BBB…BBA

然后 用 n*(n-1)/2 减去不满足的情况就可以啦

代码详情

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
	int n;
	cin>>n;
	string s;
	cin>>s;
	ll len = s.size();
	ll cta=0,ctb=0; 
	int fa=0,fb=0;
	ll ans = 0;
	for(int i=0;i<len;i++)
	{
		if(s[i]=='A') 
		{
			cta++;
			fa = 1;
			if(cta==1&&fb) ans+= ctb;
			if(cta>1&&fb) ans++;
			ctb=0;
		}
		else
		{
			ctb++;
			fb = 1;
			if(ctb==1&&fa) ans += cta;
			if(ctb>1&&fa) ans++;
			cta=0;
		}
		//cout<<"ans= "<<ans<<endl;
	}
	printf("%I64d\n",len*(len-1)/2-ans);
	return 0;
 } 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章