警示后人!!!!
查看原帖
警示后人!!!!
560335
JACK2021楼主2023/8/15 10:19

首先这题数据范围bt到10710^7,所以很容易光读入就TLE,

scanf("%d",&x);

是不行的。必须快读。参考代码:

void read(int &x){ 
	int f=1;x=0;char s=getchar();
	while(s<'0'||s>'9'){if(s=='-')f=-1;s=getchar();}
	while(s>='0'&&s<='9'){x=x*10+s-'0';s=getchar();}
	x*=f;
}

其次要用桶排序,快排O(nlog2n)O(n log_2 n)根本过不了,桶排序O(n)O(n)就行了。参考代码:

for(int i=0;i<n;i++)
	{
		read(x);
		f[x]++;
	}
	for(int i=1;i<=100000;i++)
	{
		for(int j=0;j<f[i];j++)
		{
			s1.push(i);
		}
	}
2023/8/15 10:19
加载中...