HDU 6375 度度熊学队列(双端队列)

点击链接

题意:根据输入可以添加或者删除或者合并的操作

     用双端队列或者list直接写,用动态数组vector会超时

     双端队列和list可以实现直接队头队尾插入,删除等操作,

     双端队列可以随机访问但是list不行,,而list的插入会比双端队列快,,

 

 

 



#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,q;
    while(~scanf("%d %d",&n,&q)){
        deque<int>que[n+1];
        for(int pp=1;pp<=q;pp++){
            int a,u,w;
            scanf("%d %d %d",&a,&u,&w);
            
            if(a==1){
                int x;
                scanf("%d",&x);
                if(w==0){
                    que[u].push_front(x);
                }
                else{
                    que[u].push_back(x);
                }
                
            }
            else if(a==2){
                if(!que[u].empty()){
                    if(w==1){
                        printf("%d\n",que[u][que[u].size()-1]);
                        que[u].pop_back();
                    }
                    else{
                        printf("%d\n",que[u][0]);
                        que[u].pop_front();
                    }
                }
                else{
                    printf("-1\n");
                }
                
            }
            else{
                int v=w;
                scanf("%d",&w);
                if(w==1 && que[v].size()>=2){
                    reverse(que[v].begin(),que[v].end());
                }
                while(!que[v].empty()){
                    que[u].push_back(que[v][0]);
                    que[v].pop_front();
                }
            }
        }
        
    }
}

 

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页