ABC 162 D - RGB Triplets (组合数学)
思路:
AC代码:
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
typedef long long ll;
char s[4005];
ll ans;
int main(){
int n,a[3]={};
scanf("%d",&n);
scanf("%s",s+1);
for(int i=1;i<=n;i++){
if(s[i]=='R') a[0]++;
else if(s[i]=='G') a[1]++;
else a[2]++;
}
ans=(ll)a[0]*a[1]*a[2];
for(int i=1;i<n;i++)
for(int d=1;i+d+d<=n;d++)
if((s[i]^s[i+d]^s[i+d+d])==('R'^'G'^'B')) --ans;
printf("%lld\n",ans);
return 0;
}