
一、队列安排
1.1 题目
链接:队列安排

1.2 算法原理
频繁的在某一个位置之前和之后插入元素,因此可以用双向循环的链表来模拟。
1.3 代码
#include<iostream>
using namespace std;
const int N = 1e5 + 10;
int pre[N];
int ne[N];
int mp[N]; // mp[i] 表示 i 这个同学是否已经出队
int main(){
int n; cin >> n;
ne[0]=1; mp[1]=1;
for(int i =2; i <= n; i++){
int k, p; cin >> k >> p;
if(p ==0){
pre[i]= pre[k]; ne[i]= k; ne[pre[k]]= i; pre[k]= i; mp[i]=1;
}
else if(p ==1){
pre[i]= k; ne[i]= ne[k]; pre[ne[k]]= i; ne[k]= i; mp[i]=1;
}
}
m; cin >> m;
( i =; i <= m; i++){
x; cin >> x;
(mp[x]==) ;
ne[pre[x]]= ne[x]; pre[ne[x]]= pre[x]; mp[x]=;
}
( i = ne[]; i; i = ne[i]) cout << i << ;
;
}



