优先队列为什么过不了样例?
查看原帖
优先队列为什么过不了样例?
800543
NirvanaCeleste楼主2024/6/26 11:50
#include <bits/stdc++.h>
using namespace std;
int n,m,q,u,v,t;
long long longer = 0;
priority_queue<long long> b;
deque<long long> ans;
inline void read(int& qwq){
	int awa = 0,w = 1;
	char ch = getchar();
	while(ch < '0' || ch > '9'){
		if(ch == '-') w = -1;
		ch = getchar();
	}
	while(ch >= '0' && ch <= '9'){
		awa = awa * 10 + ch - '0';
		ch = getchar();
	}
	qwq = awa * w;
}
void write(long long x) {
     if(x < 0) putchar('-'),x = -x;
     if(x > 9) write(x / 10);
     putchar(x % 10 + '0');
}
void scan(){
	cin>>n>>m>>q>>u>>v>>t;
	int temp = 0;
	for(int i=1;i<=n;i++){
		read(temp);
		b.push(temp);
	}
}
void moni(){
	double t = u / v;
	long long op = 0,p1 = 0,p2 = 0,ptemp = 0;
	for(int i=1;i<=m;i++){
		op = b.top() + longer;
		b.pop();
		ans.push_back(op);
//		p1 = floor(t * op) - longer,p2 = op - floor(t * op) - longer;
		ptemp = t * op;
		p1 = ptemp - longer,p2 = op - ptemp - longer;
		b.push(p1),b.push(p2);
		longer += q;
	}
}
void print(){
	while(!ans.empty()){
		for(int i=1;i<t;i++) if(!ans.empty()) ans.pop_front();
		if(!ans.empty()) write(ans.front());
		putchar(' ');
		if(!ans.empty()) ans.pop_front();
	}
	cout<<endl;
	while(!b.empty()){
		for(int i=1;i<t;i++) if(!b.empty()) b.pop();
		if(!b.empty()) write(b.top() + longer);
		putchar(' ');
		if(!b.empty()) b.pop();
	}
}
int main(){
	scan();
	moni();
	print();
	return 0;
} 

3 7 1 1 3 1

3 3 2

3 4 5 6 7 8 9

10 10 9 7 6 5 4 3 2 1

2024/6/26 11:50
加载中...