code:
#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main(){
//freopen("game.in","r",stdin);
//freopen("game.out","w",stdout);
int n;
cin>>n;
string s;
cin>>s;
s='$'+s;
int ans=0;
stack<char>w;
if(n<=10000){
for(int i=1;i<=n;i++){
while(w.size())w.pop();
for(int j=i;j<=n;j++){
if(w.size()==0||w.top()!=s[j])w.push(s[j]);
else w.pop();
if(w.size()==0)ans++;
}
}
cout<<ans;
}else{
for(int i=1;i<=n;i++){
while(w.size())w.pop();
for(int j=i;j<=min(i+20,n);j++){
if(w.size()==0||w.top()!=s[j])w.push(s[j]);
else w.pop();
if(w.size()==0)ans++;
}
}
cout<<ans;
}
return 0;
}
洛谷上误交错无意间发现的。