P1160 队列安排 洛谷
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个空格隔开的正整数,表示了队列从左到右所有同学的编号,行末换行且无空格。
输入输出样例
- 4
- 1 0
- 2 1
- 1 0
- 2
- 3
- 3
- 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 队列安排 洛谷的更多相关文章
- AC日记——队列安排 洛谷 P1160
队列安排 思路: 链表裸题: 来,上代码: #include <cstdio> #include <cstring> #include <iostream> usi ...
- luogu P1160 队列安排
二次联通门 :luogu P1160 队列安排 /* luogu P1160 队列安排 链表 手动模拟一下就好了... */ #include <cstdio> #define Max 5 ...
- 队列 P1160 队列安排(啊啊 不会啊)
洛谷 题目描述 一个学校里老师要将班上N个同学排成一列,同学被编号为1-N,他采取如下的方法: 1.先将1号同学安排进队列,这时队列中只有他一个人: 2.2-N号同学依次入列,编号为i的同学入列方式为 ...
- NOIP2016Day2T2蚯蚓(队列+坑爹洛谷毁我青春)
“卡常技术哪家强,中国OJ找洛谷” 去掉两个语句之后...95-->100 题目大意就不说了QWQ 首先65分裸优先队列,线段树,堆都可以... 100分:开三个队列,第一个存没被砍过的蚯蚓(要 ...
- 洛谷 P1160 队列安排 Label:链表 数据结构
题目描述 一个学校里老师要将班上N个同学排成一列,同学被编号为1-N,他采取如下的方法: 1.先将1号同学安排进队列,这时队列中只有他一个人: 2.2-N号同学依次入列,编号为i的同学入列方式为:老师 ...
- 洛谷 P1160 队列安排
题目描述 一个学校里老师要将班上 NNN 个同学排成一列,同学被编号为 $1-N$ ,他采取如下的方法: 先将 111 号同学安排进队列,这时队列中只有他一个人: 2−N2-N2−N 号同学依次入列, ...
- P1160 队列安排 luogu洛谷
题目描述 一个学校里老师要将班上NNN个同学排成一列,同学被编号为1∼N1\sim N1∼N,他采取如下的方法: 先将111号同学安排进队列,这时队列中只有他一个人: 2−N2-N2−N号同学依次入列 ...
- 洛谷P1160 队列安排
题目描述 一个学校里老师要将班上N个同学排成一列,同学被编号为1-N,他采取如下的方法: 1.先将1号同学安排进队列,这时队列中只有他一个人: 2.2-N号同学依次入列,编号为i的同学入列方式为:老师 ...
- 洛谷P1160——队列安排(双向链表)
题目描述 一个学校里老师要将班上N个同学排成一列,同学被编号为1-N,他采取如下的方法: 1.先将1号同学安排进队列,这时队列中只有他一个人: 2.2-N号同学依次入列,编号为i的同学入列方式为:老师 ...
随机推荐
- Windows10系统切换JDK版本(前提是装了多个版本的JDK)
由于是直接截屏,等我回过头来整理的时候忘记了文章原来的出处, 如作者本人看到,如有侵权,请联系删除!
- AJPFX总结mysql复制表结构,表数据
1.复制表结构及数据到新表CREATE TABLE 新表 SELECT * FROM 旧表 这种方法会将oldtable中所有的内容都拷贝过来,当然我们可以用delete from newtable; ...
- 用css制作圆环图表 (vue,sass)
效果图: 思路 :在一个容器里再放两个矩形,每个矩形都占一半,给这两个矩形都设置溢出隐藏,当去旋转矩形里面的圆形的时候,溢出部分就被隐藏掉了,这样就可以达到想要的效果. 代码-html: <di ...
- git ---匿名分支和checkout命令
git checkout -b //创建一个匿名分支
- vscode显示php函数列表
1.安装插件支持 https://marketplace.visualstudio.com/items?itemName=linyang95.php-symbols 2.ctrt+shift+o 即可 ...
- mysql执行语句汇总
插入select的数据 INSERT INTO `test1`( order_id, goods_id, goods_name, goods_sn, product_id, goods_number, ...
- [转载]迅为4418开发板Qt移植移动4G模块第一部分
本文转自迅为论坛:http://topeetboard.com 平台:iTOP-4418开发板 1.首先要配置内核,这个一步和Android系统移植3G或者4G模块是一样的.一般模块的 ...
- jquery中ajax使用error调试错误
error:function (XMLHttpRequest, textStatus, errorThrown) { } XMLHttpRequest.readyState状态码 0:未初始化还没有 ...
- slover层解读
void Solver<Dtype>::UpdateSmoothedLoss(Dtype loss, int start_iter, int average_loss) { if (los ...
- Duplicate fragment name ERROR Jetty Maven Plugin
http://stackoverflow.com/questions/5802096/duplicate-fragment-name-error-jetty-maven-plugin 4down vo ...