最后三个点TLE,求改!
查看原帖
最后三个点TLE,求改!
1354230
TaojunWang楼主2024/11/7 19:51
#include<bits/stdc++.h>
using namespace std;
const int N = 100100;
int n,w,dw,xb=1;
int a[N],b[N];
bool cmp(int a,int b){
	return a>b;
}
void tongsort(int n,int dw){
	int d[610]={0};
	int xb = 1;
	for(int i=1;i<=n;i++){
		d[a[i]]++;
	}
	for(int i=600;i>=0;i--){
		while(d[i]!=0){
			a[xb] = i;
			d[i]--;
			xb++;
		}
	}
}
int main(){
	std::cin>>n>>w;
	for(int i=1;i<=n;i++){
		std::cin>>a[i];
	}
	for(int i=1;i<=n;i++){
		dw = double(i*w/100);//当前计划获奖人数
		if(dw<=0) dw=1;
		tongsort(i,dw);
		b[xb] = a[dw];
		xb++;
	}
	for(int i=1;i<=n;i++){
		std::cout<<b[i]<<" ";
	}
	return 0;
}

用函数做桶排序,但最后三个点TLE,求改!改后请加上些注释,要不然本菜鸡看不懂,谢谢!

2024/11/7 19:51
加载中...