http://acm.hdu.edu.cn/showproblem.php?pid=6375
POINT:
用map映射deque防止MLE。
deque有insert和clear操作,方便
#include <iostream>
#include <stdio.h>
#include <deque>
#include <map>
#define LL long long
using namespace std;
const LL N = 150000+33;
const LL mod = 998244353;
map<int,deque<int> > a;
void read(int &x){
char ch = getchar();x = 0;
for (; ch < '0' || ch > '9'; ch = getchar());
for (; ch >='0' && ch <= '9'; ch = getchar()) x = x * 10 + ch - '0';
}
int main()
{
int n,q;
while(~scanf("%d%d",&n,&q)){
for(int i=1;i<=n;i++)
a[i].clear();
while(q--){
int k;
read(k);
if(k==1){
int u,w,val;
read(u);read(w);read(val);
if(w==0) a[u].push_front(val);
else a[u].push_back(val);
}else if(k==2){
int u,w;read(u);read(w);
if(a[u].size()==0){
printf("-1\n");
continue;
}
if(w==0){
printf("%d\n",a[u].front());
a[u].pop_front();
}
else{
printf("%d\n",a[u].back());
a[u].pop_back();
}
}else{
int u,v,w;read(u);read(v);read(w);
if(w==0){
a[u].insert(a[u].end(),a[v].begin(),a[v].end());
a[v].clear();
}else{
a[u].insert(a[u].end(),a[v].rbegin(),a[v].rend());
a[v].clear();
}
}
}
}
return 0;
}

 - 度度熊学队列 STL&spm=1001.2101.3001.5002&articleId=81625543&d=1&t=3&u=af9ad545896148ff94a298ee56955e20)
696

被折叠的 条评论
为什么被折叠?



