https://www.luogu.org/problem/show?pid=1160

题目描述

一个学校里老师要将班上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。

 #include <algorithm>
#include <iostream>
#define N 1000015 using namespace std; int n,x,y,m;
struct node
{
int pre,next;
}que[N]; int main()
{
cin>>n;
que[].next=;
que[].pre=,que[].next=-;
for(int i=;i<=n;i++)
{
cin>>x>>y;
if(y)
{
que[que[x].next].pre=i;
que[i].next=que[x].next;
que[x].next=i;
que[i].pre=x;
}
else
{
que[i].pre=que[x].pre;
que[que[x].pre].next=i;
que[x].pre=i;
que[i].next=x;
}
} cin>>m;
for(int i=;i<=m;i++)
{
cin>>x;
if(que[x].next==-&&que[x].pre==-) continue;
que[que[x].pre].next=que[x].next;
que[que[x].next].pre=que[x].pre;
que[x].next=que[x].pre=-;
}
int k=que[].next;
while(k!=-)
{
cout<<k<<" ";
k=que[k].next;
}
return ;
}

队列,链表

 #include <algorithm>
#include <iostream>
#define N 100005 using namespace std; int n,m,x,y,z,top;
int que[N];
int vis[N]; int main()
{
cin>>n;
que[++top]=;
for(int i=;i<=n;i++)
{
cin>>x>>y;
if(y==)
{
for(int j=;j<=top;j++)
{
if(que[j]==x)
{
top++;
for(int k=top;k>j;k--)
que[k]=que[k-];
que[j]=i;
break;
}
}
}
else
{
for(int j=;j<=top;j++)
{
if(que[j]==x)
{
top++;
for(int k=top;k>=j;k--)
que[k+]=que[k];
que[j+]=i;
break;
}
}
}
}
cin>>m;
for(int i=;i<=m;i++)
{
cin>>x;
vis[x]=;
if(vis[x])
for(int j=;j<=top;j++)
{
if(que[j]==x)
{
for(int k=j;k<top;k++)
que[k]=que[k+];
top--;
break;
}
}
}
for(int i=;i<=top;i++)
cout<<que[i]<<" ";
return ;
}

纯模拟 T一大半

P1160 队列安排 洛谷的更多相关文章

  1. AC日记——队列安排 洛谷 P1160

    队列安排 思路: 链表裸题: 来,上代码: #include <cstdio> #include <cstring> #include <iostream> usi ...

  2. luogu P1160 队列安排

    二次联通门 :luogu P1160 队列安排 /* luogu P1160 队列安排 链表 手动模拟一下就好了... */ #include <cstdio> #define Max 5 ...

  3. 队列 P1160 队列安排(啊啊 不会啊)

    洛谷 题目描述 一个学校里老师要将班上N个同学排成一列,同学被编号为1-N,他采取如下的方法: 1.先将1号同学安排进队列,这时队列中只有他一个人: 2.2-N号同学依次入列,编号为i的同学入列方式为 ...

  4. NOIP2016Day2T2蚯蚓(队列+坑爹洛谷毁我青春)

    “卡常技术哪家强,中国OJ找洛谷” 去掉两个语句之后...95-->100 题目大意就不说了QWQ 首先65分裸优先队列,线段树,堆都可以... 100分:开三个队列,第一个存没被砍过的蚯蚓(要 ...

  5. 洛谷 P1160 队列安排 Label:链表 数据结构

    题目描述 一个学校里老师要将班上N个同学排成一列,同学被编号为1-N,他采取如下的方法: 1.先将1号同学安排进队列,这时队列中只有他一个人: 2.2-N号同学依次入列,编号为i的同学入列方式为:老师 ...

  6. 洛谷 P1160 队列安排

    题目描述 一个学校里老师要将班上 NNN 个同学排成一列,同学被编号为 $1-N$ ,他采取如下的方法: 先将 111 号同学安排进队列,这时队列中只有他一个人: 2−N2-N2−N 号同学依次入列, ...

  7. P1160 队列安排 luogu洛谷

    题目描述 一个学校里老师要将班上NNN个同学排成一列,同学被编号为1∼N1\sim N1∼N,他采取如下的方法: 先将111号同学安排进队列,这时队列中只有他一个人: 2−N2-N2−N号同学依次入列 ...

  8. 洛谷P1160 队列安排

    题目描述 一个学校里老师要将班上N个同学排成一列,同学被编号为1-N,他采取如下的方法: 1.先将1号同学安排进队列,这时队列中只有他一个人: 2.2-N号同学依次入列,编号为i的同学入列方式为:老师 ...

  9. 洛谷P1160——队列安排(双向链表)

    题目描述 一个学校里老师要将班上N个同学排成一列,同学被编号为1-N,他采取如下的方法: 1.先将1号同学安排进队列,这时队列中只有他一个人: 2.2-N号同学依次入列,编号为i的同学入列方式为:老师 ...

随机推荐

  1. Burp Suite集成sqlmap

    本地环境 JDK1.8 Burp Suite 1.7.26 Python2.7 64位安装包 sqlmap zip包 安装python及sqlmap python下载下来默认安装即可,配置系统环境变量 ...

  2. Fresco 源码分析(序)

    1. 为什么要写这个分析的博客 其实关于Fresco的相关内容,大家上网搜索,一般可以找到一大推,但是为什么我还要写关于这个的呢,因为在网上搜索中文和英文的关于fresco的相关知识时,大家只是潜在的 ...

  3. iOS Programming Camera 1

     iOS Programming Camera  1 1 Displaying Images and UIImageView 1.1  put an instance of UIImageView o ...

  4. axis2客户端的几种调用方式

    (1)使用RPC方式调用WebService // 使用RPC方式调用WebService RPCServiceClient serviceClient = new RPCServiceClient( ...

  5. Websocket 关闭浏览器报错

    这个报错,是因为你关闭之后,websocket 自动连接失败造成的 只要在你的websocket 运行的类里面加上: @OnError public void onError(Throwable e, ...

  6. Ubuntu14.04环境下java web运行环境搭建

    1.jdk安装 将下载好的安装包上传至/home目录解压 tar -zxvf jdk-8u71-linux-x64.tar.gz 执行 vim /etc/profile 在末尾添加java环境变量(J ...

  7. 在PetaPoco中使用Where in

    之前一直没在意,今天查了很多资料,才知道在petapoco中使用in关键字需要使用命名参数,否则是无效的(或者只查出第一个条件的记录),示例如下: var tags= new string[]{“c1 ...

  8. C 语言指针 5 分钟教程

    指针.引用和取值 什么是指针?什么是内存地址?什么叫做指针的取值?指针是一个存储计算机内存地址的变量.在这份教程里“引用”表示计算机内存地址.从指针指向的内存读取数据称作指针的取值.指针可以指向某些具 ...

  9. 解决WCF接口无法传递object参数的问题

    在某些场合中,我们需要提供以object为参数的方法.不过在WCF中,由于需要序列化与反序列化,因此它要求所有WCF传递的参数类型都是已知的,无法传递object这种未知类型.即使用了KnownTyp ...

  10. P2P实现的原理

    为了项目的后期IM应用,最近在研究libjingle,中间看了也收集了很多资料,感慨网上很多资料要么太过于纠结协议(如STUN.ICE等)实现细节,要么中间有很多纰漏.最后去伪存真,归纳总结了一下,希 ...