90pts 10#RE求调

P2697 宝石串

Dcchen @ 2025-01-10 17:57:25

#include<iostream>
#include<string.h>
using namespace std;
int n,g[2000005],r[2000005],c[2000005];
int  fi[2000005],se[2000005],ans;
string s;  
int main(){
    cin>>s;
    int len=s.size();
    s=" "+s; 
    for(int i=1;i<=len;i++){
        g[i]=g[i-1];
        r[i]=r[i-1];
        if(s[i]=='G') g[i]++;
        else r[i]++;
    }
    for(int i=1;i<=len;i++){
        c[i]=g[i]-r[i];
    }
    fi[0]=1e9;
    for(int i=1;i<=len;i++){
        if(fi[c[i]]) continue;
        else fi[c[i]]=i;
    }  
    fi[0]=0;
    for(int i=len;i>=1;i--){
        if(se[c[i]]) continue;
        else se[c[i]]=i;
    }
    for(int i=0;i<=2000001;i++){
        ans=max(ans,se[i]-fi[i]);
    }
    cout<<ans<<'\n';

}

by liuzhuoran141516 @ 2025-01-10 18:55:29

@Dcchen 这不是AC代码吗


by Dcchen @ 2025-01-10 19:13:13

@liuzhuoran141516 我找到问题了,因为c[i] 不一定是正数,所以不能直接存普通数组


|