大佬们,求助!是什么导致了14个TLE!
查看原帖
大佬们,求助!是什么导致了14个TLE!
922691
Hisy楼主2024/1/13 13:15
#include<bits/stdc++.h>
inline int scan(void){
	int result=0;
	char got=getchar();
	int minus=1;
	while('9'<got||got<'0'){
		if(got=='-'){
			minus=-1;
		};
		got=getchar();
	};
	while('0'<=got&&got<='9'){
		result=result*10+got-'0';
		got=getchar();
	};
	return result*minus;
};
inline void print(int answer){
	if(answer<0){
		putchar('-');
		answer=-answer;
	};
	if(answer/10){
		print(answer/10);
	};
	putchar(answer%10+'0');
};
int function(std::queue<int> queue){
	if(queue.empty()){
		return -2147483648;
	}else{
		return queue.front();
	};
};
std::pair<int,int> max(std::pair<int,int> cmp1,std::pair<int,int> cmp2,std::pair<int,int> cmp3){
	return std::max(std::max(cmp1,cmp2),cmp3);
};
int mimizu[100001];
std::queue<int> queue[4];
int main(int argc,char **argv){
	int maxn=scan(),maxm=scan(),maxq=scan(),tmp1=scan(),tmp2=scan(),tmp3=scan();
	double pos=tmp1*1.0/tmp2;
	for(int iter=1;iter<=maxn;++iter){
		mimizu[iter]=scan();
	};
	std::sort(mimizu+1,mimizu+1+maxn,std::greater<int>());
	for(int iter=1;iter<=maxn;++iter){
		queue[1].push(mimizu[iter]);
	};
	for(int time=1;time<=maxm;++time){
		std::pair<int,int> pair=max({function(queue[1]),1},{function(queue[2]),2},{function(queue[3]),3});
		int first=pair.first+maxq*time;
		int second=pair.second;
		queue[second].pop();
		int head=int(pos*first);
		int tail=first-head;
		queue[2].push(head-maxq*(time+1));
		queue[3].push(tail-maxq*(time+1));
		if(time%tmp3==0){
			print(first);
			putchar(' ');
		};
	};
	putchar('\n');
	for(int iter=1;iter<=maxn+maxm;++iter){
		std::pair<int,int> pair=max({function(queue[1]),1},{function(queue[2]),2},{function(queue[3]),3});
		int first=pair.first;
		int second=pair.second;
		queue[second].pop();
		if(iter%tmp3==0){
			print(first+maxq*maxm);
			putchar(' ');
		};
	};
	return 0;
};

测试点情况

2024/1/13 13:15
加载中...