首页 > 其他分享 >w4-1 队列安排

w4-1 队列安排

时间:2023-04-19 22:44:22浏览次数:32  
标签:right 队列 安排 cin int w4 front push left

 方法一:

#include <iostream>
#include <queue>
#include <vector>
using namespace std;
//究极愚蠢queue+vector模拟 tle
int main() {
    queue<int>a;
    int N,M,judge,k,x;
    cin>>N;
    a.push(0);
    a.push(1);


    for(int i=2;i<=N;++i){
        cin>>k>>judge;
        while(a.front()!=k){
            a.push(a.front());
            a.pop();
        }
        if(judge==1){
            a.push(a.front());
            a.pop();
            a.push(i);
        }
        else{
            a.push(i);
        }
    }
    cin>>M;
    while(a.front()!=0){
        a.push(a.front());
        a.pop();
    }
    a.pop();
    vector<int>b;
    while(!a.empty()){
        b.push_back(a.front());
        a.pop();
    }
    for(int i=0;i<M;++i){
        cin>>x;
        for(int j=0;j<b.size();++j){
            if(b[j]==x) b.erase(b.begin()+j);
        }
    }
    for(auto i:b){
        cout<<i<<' ';
    }
    return 0;
}

方法二:用链表形式,离散存储

#include <iostream>
using namespace std;
struct person{
int left,right,print;
}M[100010];
int n,m;
void add(int a,int b,int c){


if(b==1) //右
{
M[c].right=M[a].right;//插入点右变为原点右
M[c].left=a;//插入点左变为原点
M[a].right=c;//原点右变为插入点
M[M[c].right].left=c;//插入点右的左的左变为插入点
}
else //左
{
M[c].right=a;
M[c].left=M[a].left;
M[a].left=c;
M[M[c].left].right=c;
}


}
void erase(int x){
M[x].print=1;
}
int main() {
cin>>n;
int num1,num2,num;
add(0,1,1);
for(int i=2;i<=n;++i){
cin>>num1>>num2;
add(num1,num2,i);
}
cin>>m;
for(int i=0;i<m;++i){
cin>>num;
erase(num);
}
for (int i=M[0].right;i;i=M[i].right){
if (M[i].print==0) //输出未标记的
cout<<i<<" ";
}
return 0;
}

 

标签:right,队列,安排,cin,int,w4,front,push,left
From: https://www.cnblogs.com/lijunjie03/p/17334959.html

相关文章

  • w4-4
      #include<iostream>#include<algorithm>#include<queue>usingnamespacestd;intk,d,m,f,q,a,b,c,tmp;doubleans;intmain(){cin>>k>>d>>m>>f;priority_queue<int>K,D,M,F;//4种球员for(in......
  • RabbitMQ队列和交换机的相关知识点
    1、关于交换机和队列的autodelete属性交换机的autodelete属性作用:当属性值设置为true,那么当所有的队列断开于交换机的绑定,那么交换机会自动删除队列的autodelete属性作用:自动删除队列和普通队列在使用上没有什么区别,唯一的区别是,当所有的相关消费者断开连接时,队列将会被删除2......
  • 消息队列的介绍和对比
    一、消息队列的介绍1.1什么是消息队列消息(Message)是指在应用间传送的数据。消息可以非常简单,比如只包含文本字符串,也可以更复杂,可能包含嵌入对象。   消息队列(MessageQueue)是一种应用间的通信方式,是在消息的传输过程中保存消息的容器。消息队列管理器在将消息从它的源传递......
  • P1160 队列安排-双链表
    碰到了一道题发现忘了数组模拟双链表怎么实现了,顺便复习了一下。然后解决问题。双链表模板题:实现一个双链表,双链表初始为空,支持 5 种操作:在最左侧插入一个数;在最右侧插入一个数;将第 k 个插入的数删除;在第 k 个插入的数左侧插入一个数;在第 k 个插入的数右侧插入一......
  • 源码共读|yocto-queue 队列 链表
    前言Yocto-queue是一种允许高效存储和检索数据的数据结构。它是一种队列类型,是一个元素集合,其中的项被添加到一端并从另一端移除。它被设计用来操作数据量很大的数组,在你需要使用大量的Array.push、Array.shift操作时,Yocto-queue有更好的性能表现。仓库地址:sindresorhus/yo......
  • 消息队列简单了解
    消息队列简单了解这消息队列虽然用起来好像很简单,但概念乱七八糟的,还是记一下吧。作用消息队列(MessageQueue,下称MQ)的三大作用:解耦、异步、削峰;解耦假设现在的一个应用包含多个微服务,其中的A服务处理完一个请求后,需要将数据发送给B、C、D服务,原本的做法是在代码中硬编......
  • 体验Rabbitmq强大的【优先级队列】之轻松面对现实业务场景
         说到队列的话,大家一定不会陌生,但是扯到优先级队列的话,还是有一部分同学是不清楚的,可能是不知道怎么去实现吧,其实呢,,,这东西已经烂大街了。。。很简单,用“堆”去实现的,在我们系统中有一个订单催付的场景,我们客户的客户在tmall,taobao下的订单,t......
  • 用双链表实现双端队列
    //双链表publicstaticclassNode<V>{publicVvalue;publicNode<V>last;publicNode<V>next;publicNode(Vv){value=v;last=null;next=null;}}//双端队列前后皆可进出publicstaticclassMyDequ......
  • 2.-4-17--栈与队列--插松枝
     人造松枝加工场的工人需要将各种尺寸的塑料松针插到松枝干上,做成大大小小的松枝。他们的工作流程(并不)是这样的:每人手边有一只小盒子,初始状态为空。每人面前有用不完的松枝干和一个推送器,每次推送一片随机型号的松针片。工人首先捡起一根空的松枝干,从小盒子里摸出最上面的......
  • 225 队列实现stack
         解决方法简单粗暴,把队列前面的都取出来再加入队尾,让之前的队尾元素排到队头,这样就可以取出了: importqueueclassMyStack:def__init__(self):self.q=queue.Queue()self.top_element=0defpush(self,x:int)->None:......