玄关求调
  • 板块灌水区
  • 楼主FranklinAn
  • 当前回复5
  • 已保存回复5
  • 发布时间2024/7/16 18:54
  • 上次更新2024/7/16 20:01:20
查看原帖
玄关求调
1350262
FranklinAn楼主2024/7/16 18:54

收集雪花 _站外题_ ****

不同的雪花往往有不同的形状。在北方的同学想将雪花收集起来,作为礼物送给在南方的同学们。一共有 n 个时刻,给出每个时刻下落雪花的形状,用不同的整数表示不同的形状。在收集的过程中,同学们不希望有重复的雪花。你可以从任意 a 时刻开始,在 b 时刻停止。a 到 b 时刻中间的雪花也都将被收集。他们希望收集的雪花最多。

Input

第一行一个正整数 n(<=1e6);

第 2 行 n 个非负整数表示 n 个时刻雪花的形状(<=1e9)。

Output

最多能收集雪花的数量。

输入数据

5

1 2 3 2 1

输出数据

3

代码:

#include<bits/stdc++.h>
using namespace std;
int n,a[1000010],l,r,ans;
set<int> s;
int main(){
	scanf("%d",&n);
	l=r=1;
	for(int i=1;i<=n;i++){
		scanf("%d",&a[i]);
		if(s.count(a[i])){
			while(a[l]!=a[i]) s.erase(a[l++]);
			s.erase(a[l++]);
		}
		s.insert(a[i]);
		ans=max(ans,r-l+1);
		r++;
	}
	printf("%d",ans);
	return 0;
}

代码40分时间超限求调!

2024/7/16 18:54
加载中...