当前位置:网站首页>P1160 队列安排
P1160 队列安排
2022-08-05 07:31:00 【Recursi】
队列安排
题目描述
一个学校里老师要将班上 N N N 个同学排成一列,同学被编号为 1 ∼ N 1\sim N 1∼N,他采取如下的方法:
先将 1 1 1 号同学安排进队列,这时队列中只有他一个人;
2 − N 2-N 2−N 号同学依次入列,编号为 i i i 的同学入列方式为:老师指定编号为 i i i 的同学站在编号为 1 ∼ ( i − 1 ) 1\sim(i-1) 1∼(i−1) 中某位同学(即之前已经入列的同学)的左边或右边;
从队列中去掉 M ( M < N ) M(M<N) M(M<N) 个同学,其他同学位置顺序不变。
在所有同学按照上述方法队列排列完毕后,老师想知道从左到右所有同学的编号。
输入格式
第 1 1 1 行为一个正整数 N N N,表示了有 N N N 个同学。
第 2 ∼ N 2\sim N 2∼N行,第 i i i 行包含两个整数 k , p k,p k,p,其中 k k k 为小于 i i i 的正整数, p p p 为 0 0 0 或者 1 1 1。若 p p p 为$ 0$,则表示将 i i i 号同学插入到 k k k 号同学的左边, p p p 为 1 1 1 则表示插入到右边。
第 N + 1 N+1 N+1 行为一个正整数 M M M,表示去掉的同学数目。
接下来 M M M 行,每行一个正整数 x x x,表示将 x x x 号同学从队列中移去,如果 x x x 号同学已经不在队列中则忽略这一条指令。
输出格式
1 1 1 行,包含最多 N N N 个空格隔开的正整数,表示了队列从左到右所有同学的编号,行末换行且无空格。
样例 #1
样例输入 #1
4
1 0
2 1
1 0
2
3
3
样例输出 #1
2 4 1
提示
样例解释:
将同学 2 2 2 插入至同学 1 1 1 左边,此时队列为:
2 1
将同学 3 3 3 插入至同学 2 2 2 右边,此时队列为:
2 3 1
将同学 4 4 4 插入至同学 1 1 1 左边,此时队列为:
2 3 4 1
将同学 3 3 3 从队列中移出,此时队列为:
2 4 1
同学 3 3 3 已经不在队列中,忽略最后一条指令
最终队列:
2 4 1
数据范围
对于 20 % 20\% 20% 的数据,有 1 ≤ N ≤ 10 1\leq N\leq 10 1≤N≤10;
对于 40 % 40\% 40% 的数据,有 1 ≤ N ≤ 1000 1\leq N\leq 1000 1≤N≤1000;
对于 100 % 100\% 100% 的数据,有 1 ≤ N , M ≤ 100000 1\leq N,M\leq100000 1≤N,M≤100000。
#include <bits/stdc++.h>
#define LL long long
using namespace std;
const int maxn = 1e6 + 10;
const int mod = 1e9 + 7;
const int INF = 1e9 + 10;
const int N = 1e6;
using namespace std;
const int mx=1e5+10;
int n,m;
struct T{
int l,r;
int d;
}t[mx]={
0};
void add(int i,int k,int f) //新增同学
{
if(f==1) //左
{
t[k].r=t[i].r;
t[k].l=i;
t[i].r=k;
t[t[k].r].l=k;
}
else //右
{
t[k].r=i;
t[k].l=t[i].l;
t[i].l=k;
t[t[k].l].r=k;
}
}
int main()
{
int x,k,f;
cin>>n;
t[0].r=0,t[0].l=0;
add(0,1,1);
for (int i=2;i<=n;i++)
{
cin>>x>>f;
add(x,i,f);
}
cin>>m;
while(m--)
{
cin>>x;
t[x].d=1; //将该同学标记为不输出
}
for (int i=t[0].r;i;i=t[i].r)
{
if (t[i].d==0) //输出未标记的
cout<<i<<" ";
}
return 0;
}
边栏推荐
- 国家强制性灯具安全标准GB7000.1-2015
- Summary of Text Characterization Methods
- Shiny02---Shiny exception solution
- 访问被拒绝:“microsoft.web.ui.webcontrols”的解决办法
- 在anaconda Promat界面import torch通过,在jupyter notebook中报错的问题(仅提供思路理解!)
- 图片地址转为base64
- Why does Mysql fail to create a database
- Vulnhub target drone: HA_ NARAK
- 4520. 质数
- MySQL:order by排序查询,group by分组查询
猜你喜欢
400 times performance improvement 丨 swap valuation optimization case calculation
MAYA大炮建模
RNote108---Display the running progress of the R program
数据库——概述
After working for 3 years, I recalled the comparison between the past and the present when I first started, and joked about my testing career
Vulnhub target drone: HA_ NARAK
餐饮大单品「真香」,却没有穿透周期的能力
unity 头发的渲染
风控特征的优化分箱,看看这样教科书的操作
MySQL: join query | inner join, outer join
随机推荐
标准C语言15
v-if/v-else根据计算判断是否显示
Flink学习10:使用idea编写WordCount,并打包运行
C语言制作-QQ聊天室
监听浏览器刷新操作
GAN generates anime avatar Pytorch
常用的遍历map的方法
Liunx教程超详细(完整)
VXE-Table融合多语言
window.open 全屏展示
Green Apple Forum reopens
高端无主灯设计灯光设计该如何布置射灯灯具?
JS实现从照片中裁切自已的肖像
在anaconda Promat界面import torch通过,在jupyter notebook中报错的问题(仅提供思路理解!)
游戏思考19:游戏多维计算相关:点乘、叉乘、点线面距离计算
访问被拒绝:“microsoft.web.ui.webcontrols”的解决办法
存储过程编写经验和优化措施
C# FileSystemWatcher
爬虫从入门到入牢
Modeling of the MAYA ship