为什么MLE了
  • 板块题目总版
  • 楼主Fyyg
  • 当前回复1
  • 已保存回复1
  • 发布时间2022/8/7 21:33
  • 上次更新2023/10/27 16:33:00
查看原帖
为什么MLE了
242405
Fyyg楼主2022/8/7 21:33
#include<bits/stdc++.h>
using namespace std;
const int N=200005;
vector<int> q[N];
vector<int> e[N];
int n,m;
char cc[16];
inline void deal1(int num,int pos){
	int dl=-1;
	for(int i=q[pos].size()-1;i>=0;--i){
		if(num<q[pos][i]){
			if(num==0) printf("%d\n",e[pos][i+1]);
			else printf("%d\n",e[pos][i]);
			dl=i;
			break;
		}
		num-=q[pos][i];
	}
	if(dl==-1){
		q[pos].clear();
		printf("%d\n",e[pos][0]);
		e[pos].clear();
		return;
	}
	q[pos].erase(q[pos].begin()+dl+1,q[pos].end());
	e[pos].erase(e[pos].begin()+dl+1,e[pos].end());
	q[pos][dl]-=num;
}
inline void deal2(int p1,int p2){
	if(q[p1].size()==0) return;
	if(q[p2].size()>0){
		if(e[p1][e[p1].size()-1]==e[p2][e[p2].size()-1]) q[p2][q[p2].size()-1]+=q[p1][q[p1].size()-1];
		else{
			q[p2].push_back(q[p1][q[p1].size()-1]);
			e[p2].push_back(e[p1][e[p1].size()-1]);
		}
		for(int i=q[p1].size()-2;i>=0;--i){
			q[p2].push_back(q[p1][i]);
			e[p2].push_back(e[p1][i]);
		}
	}
	else{
		for(int i=q[p1].size()-1;i>=0;--i){
			q[p2].push_back(q[p1][i]);
			e[p2].push_back(e[p1][i]);
		}
	}
	q[p1].clear();
	e[p1].clear();
}
int main(){
	//freopen("T2_large.in","r",stdin);
	//freopen("T2_large.out","w",stdout);
	int x,y,z;
	scanf("%d%d",&n,&m);
	for(int i=1;i<=m;++i){
		scanf("%s%d%d",(cc+1),&x,&y);
		if(cc[3]=='s'){
			scanf("%d",&z);
			q[z].push_back(x);
			e[z].push_back(y);
		}
		else if(cc[3]=='p'){
			deal1(x,y);
		}
		else{
			deal2(x,y);
		}
	}
	return 0;
}
/*
2 3
push 5 1 1
push 4 2 1
pop 8 1
*/
2022/8/7 21:33
加载中...