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. iOS Programming Dynamic Type 2

    iOS Programming Dynamic Type  2       You will need to update two parts of this view controller for ...

  2. 一致性hash学习

    一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似.一致性哈希修正了CARP使用的简 单哈 ...

  3. js 作用域 ?????

    ///*第一种情况 */ //var mycars = new Array() //mycars[0] = 0; //mycars[1] = 1; //mycars[2] = 2; //functio ...

  4. 【java】查重类的实现

    import java.util.Vector; public class ElementCheck { // 重复优先 static Vector<Integer> CheckSameE ...

  5. Seating Arrangement

    1997: Seating Arrangement Time Limit: 1 Sec     Memory Limit: 128 Mb     Submitted: 543     Solved:  ...

  6. cookie存储位置

    平时各位在做项目时多半时候都会用到客户端的cookie,可大家知道cookie是存储在哪里吗? 首先cookie失效分为2种: 1:设置过期时间失效(只要设置了过期时间cookie就会存储在硬盘里面) ...

  7. react入门(下)

    react生命周期 1. 组件的三个生命周期状态: * Mount:插入真实 DOM * Update:被重新渲染 * Unmount:被移出真实 DOM2. React 为每个状态都提供了两种勾子( ...

  8. 学习React从接受JSX开始

    详情参考官方JSX规范 虽然JSX是扩展到ECMAScript的类XML语法,但是它本身并没有定义任何语义.也就是说它本身不在ECMAScript标准范围之内.它也不会被引擎或者浏览器直接执行.通常会 ...

  9. HDU - 2612 Find a way(BFS搜索)

    题目: 链接 思路: 用BFS分别以‘Y’和‘M’的位置为起点进行两次搜索,并把这两次的搜索结果在一个二维数组中保存下来,在对地图遍历遇到‘@’更行最小值. PS: 如果用‘Y’和‘M’点分别去搜每个 ...

  10. 算法竞赛入门经典5.2 STL初步

    1. 排序和检索,学会使用sort排序,以及low_bound函数 Raju and Meena love to play with Marbles. They have got a lot of m ...