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的同学入列方式为:老师 ...
随机推荐
- JSP(Java Servlet Page)
一.简介 HTML HTML擅长显示一个静态的网页,但是不能调用Java程序. Servlet Servlet擅长调用Java程序和后台进行交互,但是它不擅长显示一个完整的HTML页面. 我们希望创建 ...
- Android 轻松实现语音朗读
语音朗读,这是一个很好的功能,可以实现一些客户的特殊要求.在Android 实现主意功能只需要几段简单的代码即可完成. 在Android 中使用语音朗读功能 只需要使用此类 TextToSpeech ...
- 理清楚HTML和DHTML和XML的概念
DHTML 不是 W3C 标准DHTML 指动态 HTML(Dynamic HTML).DHTML 不是由万维网联盟(W3C)规定的标准.DHTML 是一个营销术语 - 被网景公司(Netscape) ...
- vultr服务器L2TP搭建
前期准备,购买外服,选择vultr服务商,可选择洛杉矶的,系统为Ubuntu 14.04 x64 一.安装L2TP/IPSec wget --no-check-certificate https:// ...
- sqlalchemy ORM进阶- 批量插入数据
参考: https://www.jb51.net/article/49789.htm https://blog.csdn.net/littlely_ll/article/details/8270687 ...
- 基于ant design form的二次封装
// standardForm.js import React, { PureComponent } from 'react'; import PropTypes from 'prop-types'; ...
- Timer时钟(之一)
using System.Timers; static void Main(string[] args) { ThreadingTimer(); DateTime a = DateTime.Now; ...
- python 3 廖雪峰博客笔记(二) python解释器
python 解释器用于理解 python代码,存在多种python解释器 CPython 官方版本python解释器,用C语言开发,使用最广泛 IPython 基于CPython,在交互方式上有所增 ...
- python装饰器、迭代器、生成器
装饰器:为已存在的函数或者或者对象添加额外的功能 def wrapper(f): #装饰器函数,f是被装饰的函数 def inner(*args,**kwargs): '''在被装饰函数之前要做的事' ...
- delphi clipboard
判断clipboard里的格式: if CliPBoard.HasFormat(CF_TEXT) then EdIT1.Text := CliPBoard.AsText ...