Codeforces - AB-string

题目链接:AB-string


考虑计算不合法的字符串。
我们可以发现形式为:
_______ AB
AB_______
BA_______
_______BA

用总方案减去即可。


AC代码:

#pragma GCC optimize("-Ofast","-funroll-all-loops")
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=3e5+10;
int n,res; char str[N];
signed main(){
	scanf("%lld %s",&n,str+1);
	for(int i=1,cnt=0;i<=n;i++){
		if(str[i]=='B') res+=cnt,cnt=0;
		else cnt++; 
	}
	for(int i=1,cnt=0;i<=n;i++){
		if(str[i]=='A') res+=cnt,cnt=0;
		else cnt++; 
	}
	reverse(str+1,str+1+n);
	for(int i=1,cnt=0;i<=n;i++){
		if(str[i]=='B') res+=max(0LL,cnt-1),cnt=0;
		else cnt++; 
	}
	for(int i=1,cnt=0;i<=n;i++){
		if(str[i]=='A') res+=max(0LL,cnt-1),cnt=0;
		else cnt++; 
	}
	cout<<n*(n-1)/2-res;
	return 0;
}
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 酷酷鲨 设计师:CSDN官方博客 返回首页