Luogu P1160 【队列安排】
很明显的一个链表裸题
和普通的链表有一个区别就是这个题
可以O(1)插入,O(1)查询
然后我们为了方便,采用双向链表,定义s、f作为指针数组
更详细的解释见代码
#include<iostream>
using namespace std;
const int maxn=1e5+;
int n,m,cnt,s[maxn],f[maxn],fi;
int main()
{
cin>>n;
for(int i=;i<=n;i++)
{
int k,p;
cin>>k>>p;
if(!p) //插入到左边
{
s[i]=k; //更新被影响的节点的指针
f[i]=f[k];
s[f[k]]=i;
f[k]=i;
}
else //插入到右边
{
f[i]=k;
s[i]=s[k];
f[s[k]]=i;
s[k]=i;
}
}
cin>>m;
while(m--) //删除
{
int x;
cin>>x;
if(f[x]==-)
continue;
f[s[x]]=f[x];
s[f[x]]=s[x];
f[x]=s[x]=-;
}
for(int i=;i<=n;i++) //寻找头指针
if(!f[i])
{
fi=i;
break;
}
for(int i=fi;i;i=s[i]) //输出链表
cout<<i<<' ';
cout<<endl;
return ;
}
Luogu P1160 【队列安排】的更多相关文章
- luogu P1160 队列安排
二次联通门 :luogu P1160 队列安排 /* luogu P1160 队列安排 链表 手动模拟一下就好了... */ #include <cstdio> #define Max 5 ...
- Luogu P1160队列安排【链表/老文搬家】By cellur925
原文发表于2018-04-15 08:15:09,我的luogu博客qwq. 看到题以后,要求维护一个可在任意位置修改添加删除元素的序列,那么显然我们可以用到链表. 然而本蒟蒻不久前刚刚学会链表.链表 ...
- [Luogu 1160] 队列安排
Luogu 1160 队列安排 链表H2O H2O H2O模板. 太久不写链表,忘干净了,竟调了半个晚上. 保留备用. #include <cstdio> #include <cst ...
- P1160 队列安排 luogu洛谷
题目描述 一个学校里老师要将班上NNN个同学排成一列,同学被编号为1∼N1\sim N1∼N,他采取如下的方法: 先将111号同学安排进队列,这时队列中只有他一个人: 2−N2-N2−N号同学依次入列 ...
- P1160 队列安排 洛谷
https://www.luogu.org/problem/show?pid=1160 题目描述 一个学校里老师要将班上N个同学排成一列,同学被编号为1-N,他采取如下的方法: 1.先将1号同学安排进 ...
- 洛谷 P1160 队列安排 Label:链表 数据结构
题目描述 一个学校里老师要将班上N个同学排成一列,同学被编号为1-N,他采取如下的方法: 1.先将1号同学安排进队列,这时队列中只有他一个人: 2.2-N号同学依次入列,编号为i的同学入列方式为:老师 ...
- 洛谷 P1160 队列安排
题目描述 一个学校里老师要将班上 NNN 个同学排成一列,同学被编号为 $1-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的同学入列方式为:老师 ...
- P1160 队列安排
题目描述 一个学校里老师要将班上N个同学排成一列,同学被编号为1-N,他采取如下的方法: 1.先将1号同学安排进队列,这时队列中只有他一个人: 2.2-N号同学依次入列,编号为i的同学入列方式为:老师 ...
随机推荐
- 那些ie6已支持的方法属性,成为事实标准。或者方便大家的api
很多api,都是ie6实现,后来其他w3c或其他浏览器支持,或者用类似的方法模拟 onselectionchange 判断选区改变 ,chrome已支持 Element.contains 判断元 ...
- bzoj 4358: permu 莫队
第一步先莫队分块. 对于每一块l~r,初始右端点设为r+1,然后每个询问先将右端点往右移,然后处理询问在l~r之间的部分,最后用一个栈再把l~r的复原. 具体来说是维护两个数组now1和now2,一个 ...
- C++ 文本查询2.0(逻辑查询)
代码实例实现了继承和友元之间的关系,以及为了隐藏实际继承实现,而实现的接口类,代码偏乱,楼主- -自看的(提醒作用) TextQuery.h // // Created by 徐爱东 on 17/7/ ...
- python基础3--字符串
字符串 1.大小写转换 >>> name 'bigberg' >>> name.capitalize() # 首字母大写 'Bigberg' >>> ...
- 星号三角形 I
N = int(eval(input())) for row in range(1,N+1): if row%2 != 0: a = '*'*row print ('{}'.format(a.cent ...
- UVA12167 Proving Equivalences
UVA12167 Proving Equivalences 题意翻译 题目描述 在数学中,我们常常需要完成若干命题的等价性证明. 例如:有4个命题a,b,c,d,要证明他们是等价的,我们需要证明a&l ...
- python内置数据结构方法的时间复杂度
转载自:http://www.orangecube.net/python-time-complexity 本文翻译自Python Wiki 本文基于GPL v2协议,转载请保留此协议. 本页面涵盖了P ...
- HDU 2814 斐波那契循环节 欧拉降幂
一看就是欧拉降幂,问题是怎么求$fib(a^b)$,C给的那么小显然还是要找循环节.数据范围出的很那啥..unsigned long long注意用防爆的乘法 /** @Date : 2017-09- ...
- 二分算法的应用——Codevs 1766 装果子
#include<iostream> #include<cstdio> using namespace std; + ; typedef long long LL; LL a[ ...
- Eclipse安卓插件安装
首先说明下载的ADT专门真安卓开发的Eclipse下载下来后就集成了可以直接使用了 但是使用j2EE版本的Eclipse就需要安装插件支持安卓开发了 首先下载ADT Eclipse安卓插件 下载完成后 ...