#include <bits/stdc++.h>
using namespace std;
const int N=5e5+5;
int pg[N],ph[N],nh[N],ng[N];
int main()
{
int n;
cin>>n;
string s;
cin>>s;
s=" "+s;
unsigned long long ans=0;
int cntg=0,cnth=0;
int th=0,tg=0;
for(int i=1;i<=n;i++)
{
if(s[i]=='H')
{
pg[i]=cntg;ng[th]=cntg;cntg=0;cnth++;
th=i;
}
else
{
ph[i]=cnth;nh[tg]=cnth;cnth=0;cntg++;
tg=i;
}
}
nh[tg]=cnth;
ng[th]=cntg;
/* for(int i=1;i<=n;i++)
{
cout<<ph[i]<<" "<<nh[i]<<" "<<pg[i]<<" "<<ng[i]<<"\n";
}*/
for(int i=2;i<n;i++)
{
if(s[i-1]=='H'&&s[i+1]=='H'&&s[i]=='G') ans+=ph[i]*nh[i];
else if(s[i-1]=='G'&&s[i+1]=='G'&&s[i]=='H') ans+=pg[i]*ng[i];
else if(s[i]=='H') ans+=pg[i]+ng[i]-(pg[i]+ng[i]==0?0:1);
else ans+=ph[i]+nh[i]-(ph[i]+nh[i]==0?0:1);
}
ans+=ng[1]+nh[1]+ph[n]+pg[n]-2;
cout<<ans;
return 0;
}
一个多小时没调出来。。。沉默了
思路相同的同学帮忙看一眼吧