如何使迭代器快速指向指定元素?
查看原帖
如何使迭代器快速指向指定元素?
550074
cloudemakers楼主2022/12/19 20:56

STL的list做法 3,4,5TLE 应该是每次查找元素的指针的时候都用了循环,那怎么优化?

完整代码:

#include<bits/stdc++.h>
using namespace std;
list<int> a;
list<int>::iterator it;
int n,k,p,m,x,flag[100005];
inline int read(){
	int x=0,f=1;
	char ch=getchar();
	while (ch<'0'||ch>'9'){
		if (ch=='-') f=-1;
		ch=getchar();
	}
	while (ch>='0'&&ch<='9'){
		x=(x<<1)+(x<<3)+(ch-'0');
		ch=getchar();
	}
	return x*f;
}//快读
inline void print(){
	for (it=a.begin();it!=a.end();it++) printf("%d ",*it);
	return ;
}
int main(){
	n=read();
	a.push_back(1);
	for (int i=2;i<=n;i++){
		k=read();p=read();
		it=a.begin();
		while (*it!=k)	it++;
		if (p==1) it++;
		a.insert(it,i);
	}
	m=read();	
	for (int i=1;i<=m;i++){
		x=read();
		if (flag[x]==1) continue;
		it=a.begin();
		while(*it!=x)	it++;
		flag[*it]=1;
		a.erase(it);
	} 
	print();
}
2022/12/19 20:56
加载中...