P1160 队列安排 链表
题目链接
因为有很多删除与插入的操作,所以用链表是最好的方法。一道基础的链表题,用stl自带的链表解决,第一次使用,记录迭代器下标还是第一次见到-。-
#pragma comment (linker,"/STACK:102400000,102400000")
#include<stdio.h>
#include<string.h>
#include<string>
#include<iostream>
#include<algorithm>
#include<math.h>
#include<set>
#include<stack>
#include<vector>
#include<map>
#include<queue>
#include<list>
#define myself i,l,r
#define lson i<<1
#define rson i<<1|1
#define Lson i<<1,l,mid
#define Rson i<<1|1,mid+1,r
#define half (l+r)/2
#define lowbit(x) x&(-x)
#define min4(a,b,c,d) min(min(a,b),min(c,d))
#define min3(x,y,z) min(min(x,y),z)
#define max3(x,y,z) max(max(x,y),z)
#define max4(a,b,c,d) max(max(a,b),max(c,d))
#define pii make_pair
#define pr pair<int,int>
typedef long long ll;
const int inff=0x3f3f3f3f;
const long long inFF=9223372036854775807;
const int dir[4][2]={0,1,0,-1,1,0,-1,0};
const int mdir[8][2]={0,1,0,-1,1,0,-1,0,1,1,-1,1,1,-1,-1,-1};
const double eps=1e-10;
const double E=2.718281828459;
const double pi=acos(-1.0);
const int mod=1e6+3;
using namespace std;
const int maxn=2e5+5;
list<int> l;
using itt=list<int>::iterator;
itt pos[maxn];//记录某个数迭代器下标
int erased[maxn];//记录某个数是否被删除
int main()
{int n,m;cin>>n;l.push_front(1);pos[1]=l.begin();for(int i=2;i<=n;i++){int k,p;scanf("%d %d",&k,&p);if(p==0) pos[i]=l.insert(pos[k],i);else{auto nextit =next(pos[k]);pos[i]=l.insert(nextit,i);}}cin>>m;for(int i=1,x;i<=m;i++){scanf("%d",&x);if(!erased[x]) l.erase(pos[x]);erased[x]=1;}int flag=1;for(auto it=l.begin();it!=l.end();++it){if(!flag) printf(" %d",*it);else printf("%d",*it),flag=0;}printf("\n");return 0;
}
P1160 队列安排 链表相关推荐
- 洛谷P1160 队列安排 链表
洛谷P1160 队列安排 链表 1 #include <cstdio> 2 #include <cstring> 3 #include <cmath> 4 #i ...
- P1160 队列安排
队列安排 题目描述 一个学校里老师要将班上N个同学排成一列,同学被编号为1~N,他采取如下的方法: 先将111号同学安排进队列,这时队列中只有他一个人: 2−N2-N2−N号同学依次入列,编号为i的同 ...
- P1160 队列安排 洛谷
https://www.luogu.org/problem/show?pid=1160 题目描述 一个学校里老师要将班上N个同学排成一列,同学被编号为1-N,他采取如下的方法: 1.先将1号同学安排进 ...
- 洛谷-P1160 队列安排
题目 Problem Description 一个学校里老师要将班上N个同学排成一列,同学被编号为1-N,他采取如下的方法: 1.先将1号同学安排进队列,这时队列中只有他一个人: 2.2-N号同学依次 ...
- 【Java8】堆栈/队列/数组/链表/红黑树,List/set子接口,hashcode/hashset,Map/内部接口,/统计字符个数,debug,斗地主,Collections,TreeSet
文章目录 1.堆栈/队列/数组/链表:数据结构即计算机组织管理数据的方式,堆栈指的是内存图中的栈,不是堆 2.红黑树:二查,二查平,二查平1倍 3.List子接口:集合,IndexOutOfBound ...
- 栈,队列和链表三者之间的关系与区别
最近一直在学习算法,刷算法题,但是自从大学毕业以来,数据结构的知识都还给老师了,只会个数组,所以前期刷的题目也都是有关数组的 最近跟着小册重学了一遍数据结构,今天就记录一下栈,队列和链表三者之间的关系 ...
- 常见的数据结构:栈 队列 数组 链表 红黑树——List集合 _ HashSet集合、可变参数 collections集合 Map集合
2021-06-07复习java 一.常见的数据结构 栈(先进后出) 队列 数组 链表 红黑树 二.List集合_介绍&常用方法 ArrayList集合 Linkedlist集合 三.Hash ...
- Luogu P1160 【队列安排】
详细的链表讲解 很明显的一个链表裸题 和普通的链表有一个区别就是这个题 可以O(1)插入,O(1)查询 然后我们为了方便,采用双向链表,定义s.f作为指针数组 更详细的解释见代码 #include&l ...
- 数据结构--队列(链表实现)
队列的一种链表简单实现 package mainimport "fmt"type Queue struct {id intname stringnext *Queue }//Pus ...
最新文章
- 使用PHP读取和创建txt,doc,xls,pdf类型文件
- ajax异步请求验证ua的网页,ajax 异步请求数据
- 科学家名言录[人生]
- 高效管理 GitHub Star,用这几个插件就能做到!
- 关于tr:hover变色的问题
- framework7 1.3.5 路由跳转后DOM失效问题
- 17商品推荐系统项目框架
- Unity物体运动时画出轨迹
- 【信息系统分析与设计】【期末考】
- 英语单词速记(一直更新中......)
- C语言使用 gzip 算法压缩数据
- crackme.chm之Chafe1
- 京东云618年中大促开始啦!
- 自定义dialog 可以读秒自动关闭
- Ubuntu下如何开启iPhone屏幕护眼模式
- 二、Apollo高精地图详解(2. 高精地图的采集、生产与格式规范)
- 航拍服务价格表,航拍测绘怎么计费的
- 【AI人工智能】ChatGPT的价值和10大应用场景
- kubelet 无法启动排查
- matlab 出现nan原因,在matlab中NAN是什么意思?