赛时 AC,赛后 TLE
查看原帖
赛时 AC,赛后 TLE
93266
断清秋楼主2022/2/26 20:45

RT,赛时过了,赛后交题的时候发现多了一个测试点 77,数据量是 3e5,然后我 O(n)O(\sum n) 的代码 TLE 了?

#include<bits/stdc++.h>
#define ll long long
#define back return
#define ri register int
#define ull unsigned ll
using namespace std;
ll read()
{
	ll x=0,f=1;
	char ch=getchar();
	while(ch<'0'||ch>'9')
	{
		if(ch=='-')
			f=-1;
		ch=getchar();
	}
	while(ch>='0'&&ch<='9')
	{
		x=x*10+ch-'0';
		ch=getchar();
	}
	back x*f;
}
int t,n;
int a[300005];
unordered_map<int,int> vis;
int main()
{
	t=read();
	while(t--)
	{
		int sum=0;
		n=read();
		for(ri i=1;i<=n;i++)
			a[i]=read();
		for(ri i=1;i<=n;i++)
			if(!vis[a[i]])
				vis[a[i]]=1,sum++;
		for(ri i=1;i<=n;i++)
			if(i<=sum)
				cout<<sum<<" ";
			else
				cout<<i<<" ";
		cout<<"\n";
		for(ri i=1;i<=n;i++)
			vis[a[i]]=0;
	}
	back 0;
}
2022/2/26 20:45
加载中...