为何TLE
  • 板块学术版
  • 楼主XYzero
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/3/10 13:51
  • 上次更新2024/3/10 16:12:39
查看原帖
为何TLE
917025
XYzero楼主2024/3/10 13:51

昨天abc E 的代码,想问是map炸了吗?

#include<bits/stdc++.h>
using namespace std;
const int N = 4e5 + 10;
#define int long long
struct {
	int lst,nxt;
	int val;
}a[N];
map<int,int>v;
int q,n,tot,head,tail;
void insert(int x,int y,int k){
	int num = v[x];
	if(num == tail)tail = k;
	int nxt = a[num].nxt;
	a[nxt].lst = k,a[num].nxt = k;
	a[k].lst = num,a[k].nxt = nxt;
	a[k].val = y;

}
void del(int x){
	int num = v[x];
	if(num == head)head = a[num].nxt;
	int lst = a[num].lst;
	int nxt = a[num].nxt;
	a[nxt].lst = lst;
	a[lst].nxt = nxt;
}
signed main(){
	cin >> n;
	for(int i = 1;i <= n;i++){
		cin >> a[i].val;
		a[i].lst = i - 1,a[i].nxt = i + 1; 
		v[a[i].val] = i;
	}
	
	tot = n,head = 1,tail = n;
	a[n].nxt = 0;
	cin >> q;
	for(int i = 1;i <= q;i++){
		int opt,x,y;
		cin >> opt;
		if(opt == 1){
			cin >> x >> y;
			tot ++;
			v[y] = tot;
			insert(x,y,tot);
		}
		else{
			cin >> x;
			del(x);
		}
	}
    for(int i = head;;i = a[i].nxt){
    	cout << a[i].val << " ";
    	if(i == tail)break;
	}
	
	return 0;
}
2024/3/10 13:51
加载中...