1 条题解

  • 1
    @ 2026-3-25 11:40:56
    #include<bits/stdc++.h>
    using namespace std;
    #define int long long
    int ans,r[100010],g[100010],b[100010],n;
    char s[100010];
    signed main() {
    	cin>>n;
    	for(int i=1; i<=n; i++) {
    		cin>>s[i];
    		b[i]=b[i-1];
    		g[i]=g[i-1];
    		r[i]=r[i-1];
    		if(s[i]=='R') {
    			r[i]++;
    		}
    		if(s[i]=='G') {
    			g[i]++;
    		}
    		if(s[i]=='B') {
    			b[i]++;
    		}
    	}
    	for(int i=2; i<=n-1; i++) {
    		if(s[i]=='R') {
    			ans+=g[i]*(b[n]-b[i]);
    			ans+=b[i]*(g[n]-g[i]);
    		}
    		if(s[i]=='G') {
    			ans+=r[i]*(b[n]-b[i]);
    			ans+=b[i]*(r[n]-r[i]);
    		}
    		if(s[i]=='B') {
    			ans+=g[i]*(r[n]-r[i]);
    			ans+=r[i]*(g[n]-g[i]);
    		}
    		for(int j=1; j<=n; j++) {
    			int sb1=i-j,sb2=i+j,sb3=n+1;
    			if(sb1<=0||sb2>=sb3) {
    				break;
    			}
    			if(s[sb1]!=s[sb2]&&s[sb1]!=s[i]&&s[i]!=s[sb2])ans--;
    		}
    	}
    	cout<<ans;
    	return 0;
    }
    
    

    信息

    ID
    2596
    时间
    1000ms
    内存
    128MiB
    难度
    6
    标签
    (无)
    递交数
    146
    已通过
    46
    上传者