警钟敲烂
  • 板块P2697 宝石串
  • 楼主Cang_shu
  • 当前回复4
  • 已保存回复4
  • 发布时间2022/10/20 19:01
  • 上次更新2023/10/27 06:45:32
查看原帖
警钟敲烂
495601
Cang_shu楼主2022/10/20 19:01

以下代码AC

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
string s;
int f[3000010],ff[3000010];
int ans;
int main(){
	getline(cin,s);
	int l=s.size();
	for(int i=0;i<l;i++){
		if(s[i]=='G') ff[i+1]=1;
		if(s[i]=='R') ff[i+1]=-1;
	}
	for(int i=1;i<=l;i++) f[i]=f[i-1]+ff[i];
	for(int i=1;i<=l;i++){
		for(int j=i+1;j<=l;j++){
			if(f[j]-f[i-1]==0){
				ans=max(ans,j-(i-1));
			}
		}
	}
	cout<<ans;
	return 0;
}

而这个代码只有60分

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
string s;
int f[3000010],ff[3000010];
int ans;
int main(){
	getline(cin,s);
	int l=s.size();
	for(int i=0;i<l;i++){
		if(s[i]=='G') ff[i+1]=1;
		if(s[i]=='R') ff[i+1]=2;
	}
	for(int i=1;i<=l;i++) f[i]=f[i-1]+ff[i];
	for(int i=1;i<=l;i++){
		for(int j=i+1;j<=l;j++){
			if((f[j]-f[i-1])%3==0){
				ans=max(ans,j-(i-1));
			}
		}
	}
	cout<<ans;
	return 0;
}
2022/10/20 19:01
加载中...