zoukankan      html  css  js  c++  java
  • 9.26做题-队列安排

    

    题目描述

    一个学校里老师要将班上N个同学排成一列,同学被编号为1~N,他采取如下的方法:
    1.先将1号同学安排进队列,这时队列中只有他一个人;
    2.2~N号同学依次入列,编号为i的同学入列方式为:老师指定编号为i的同学站在编号为1~i -1中某位同学(即之前已经入列的同学)的左边或右边;
    3.从队列中去掉M(M<N)个同学,其他同学位置顺序不变。
    在所有同学按照上述方法队列排列完毕后,老师想知道从左到右所有同学的编号。

    输入输出格式

    输入格式:

    输入文件arrange.in的第1行为一个正整数N,表示了有N个同学。
    第2~第N行,第i行包含两个整数k,p,其中k为小于i的正整数,p为0或者1。若p为0,则表示将i号同学插入到k号同学的左边,p为1则表示插入到右边。
    第N+1行为一个正整数M,表示去掉的同学数目。
    接下来M行,每行一个正整数x,表示将x号同学从队列中移去,如果x号同学已经不在队列中则忽略这一条指令。

    输出格式:

    输入文件arrange.out仅包括1行,包含最多N个空格隔开的正整数,表示了队列从左到右所有同学的编号,行末换行且无空格。

    输入输出样例

    输入样例#1:
    4
    1 0
    2 1
    1 0
    2
    3
    3
    输出样例#1:
    2 4 1
    
    将同学2插入至同学1左边,此时队列为:
    2 1
    将同学3插入至同学2右边,此时队列为:
    2 3 1
    将同学4插入至同学1左边,此时队列为:
    2 3 4 1
    将同学3从队列中移出,此时队列为:
    2 4 1
    同学3已经不在队列中,忽略最后一条指令
    最终队列:
    2 4 1

    说明

    对于20%的数据,有N≤10;
    对于40%的数据,有N≤1000;
    对于100%的数据,有N, M≤100000。


    考察算法:双向队列


    题解

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    Roce ofed 环境搭建与测试
    Ubuntu 1804 搭建NFS服务器
    Redhat 8.0.0 安装与网络配置
    Centos 8.1 安装与网络配置
    SUSE 15.1 系统安装
    VSpare ESXi 7.0 基本使用(模板、iso、SRIOV)
    VSpare ESXi 7.0 服务器安装
    open SUSE leap 15.1 安装图解
    KVM虚拟机网卡连接网桥
    GitHub Action一键部署配置,值得拥有
  • 原文地址:https://www.cnblogs.com/wuhu-xiaoshen/p/4918647.html
Copyright © 2011-2022 走看看