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;
 } 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章