求助,O(N)为什么会TLE
  • 板块P1638 逛画展
  • 楼主IT__windy
  • 当前回复2
  • 已保存回复2
  • 发布时间2022/2/13 10:06
  • 上次更新2023/10/28 08:42:13
查看原帖
求助,O(N)为什么会TLE
597716
IT__windy楼主2022/2/13 10:06

过了七个点,还有三个TLE。百思不得其解

#include<bits/stdc++.h>
using namespace std;
int read(){
	int x=0,w=1;
	char c=getchar();
	while(c<'0'||c>'9'){if(c=='-')w=-1;c=getchar();}
	while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}
	return x*w;
}
int num[2005],qu[100005],head=1,tail,sum,ans=0x7fffffff,l,r;
int minn(int x,int y){
	if(x<y){r=tail,l=head;return x;}
	else return y;
}
int main(){
	int m,n;
	cin>>n>>m;
	for(tail=1;tail<=n;tail++){
		qu[tail]=read();
		if(num[qu[tail]]==0)sum++;
		num[qu[tail]]++;
		while(num[qu[head]]>1){num[qu[head++]]--;}
		if(sum==m){ans=minn(tail-head,ans);}	
	}
	printf("%d %d",l,r);
	return 0;
}
2022/2/13 10:06
加载中...