详细的链表讲解

很明显的一个链表裸题

和普通的链表有一个区别就是这个题

可以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 【队列安排】的更多相关文章

  1. luogu P1160 队列安排

    二次联通门 :luogu P1160 队列安排 /* luogu P1160 队列安排 链表 手动模拟一下就好了... */ #include <cstdio> #define Max 5 ...

  2. Luogu P1160队列安排【链表/老文搬家】By cellur925

    原文发表于2018-04-15 08:15:09,我的luogu博客qwq. 看到题以后,要求维护一个可在任意位置修改添加删除元素的序列,那么显然我们可以用到链表. 然而本蒟蒻不久前刚刚学会链表.链表 ...

  3. [Luogu 1160] 队列安排

    Luogu 1160 队列安排 链表H2O H2O H2O模板. 太久不写链表,忘干净了,竟调了半个晚上. 保留备用. #include <cstdio> #include <cst ...

  4. P1160 队列安排 luogu洛谷

    题目描述 一个学校里老师要将班上NNN个同学排成一列,同学被编号为1∼N1\sim N1∼N,他采取如下的方法: 先将111号同学安排进队列,这时队列中只有他一个人: 2−N2-N2−N号同学依次入列 ...

  5. P1160 队列安排 洛谷

    https://www.luogu.org/problem/show?pid=1160 题目描述 一个学校里老师要将班上N个同学排成一列,同学被编号为1-N,他采取如下的方法: 1.先将1号同学安排进 ...

  6. 洛谷 P1160 队列安排 Label:链表 数据结构

    题目描述 一个学校里老师要将班上N个同学排成一列,同学被编号为1-N,他采取如下的方法: 1.先将1号同学安排进队列,这时队列中只有他一个人: 2.2-N号同学依次入列,编号为i的同学入列方式为:老师 ...

  7. 洛谷 P1160 队列安排

    题目描述 一个学校里老师要将班上 NNN 个同学排成一列,同学被编号为 $1-N$ ,他采取如下的方法: 先将 111 号同学安排进队列,这时队列中只有他一个人: 2−N2-N2−N 号同学依次入列, ...

  8. 队列 P1160 队列安排(啊啊 不会啊)

    洛谷 题目描述 一个学校里老师要将班上N个同学排成一列,同学被编号为1-N,他采取如下的方法: 1.先将1号同学安排进队列,这时队列中只有他一个人: 2.2-N号同学依次入列,编号为i的同学入列方式为 ...

  9. 洛谷P1160 队列安排

    题目描述 一个学校里老师要将班上N个同学排成一列,同学被编号为1-N,他采取如下的方法: 1.先将1号同学安排进队列,这时队列中只有他一个人: 2.2-N号同学依次入列,编号为i的同学入列方式为:老师 ...

  10. P1160 队列安排

    题目描述 一个学校里老师要将班上N个同学排成一列,同学被编号为1-N,他采取如下的方法: 1.先将1号同学安排进队列,这时队列中只有他一个人: 2.2-N号同学依次入列,编号为i的同学入列方式为:老师 ...

随机推荐

  1. 1:IMEI、MSISDN字段隐藏方法

     1.在服务器上找到带有手机号码及IMEI的报表,下载到本地:          2.找到如下方框的表格列(例如:ID:104的报表):

  2. 仿微博的JQuery日历控件

    实现原理主要是处理table,生成tr td,其中最重要的是如何找出每月第一天是星期几,然后就能对应出这个月的余下天数. 日历控件网上一搜一大把,但是我觉得自己写一遍还是有好处的.代码可以查看本页源代 ...

  3. js正则取出一个字符串小括号中的内容

    var aa="ldfjsldfj(dsfasjfj3124123)"; var result = aa.match(/\(([^)]*)\)/); // 此时result=[&q ...

  4. Mat中两种像素遍历方法比较

    小白,入门中,不足其指正.刚刚接触opencv,从一个Matlab风格的编程环境突然跳转到C++,实在有些不适.单就pixels scanning花了好长时间研究.opencv-tutorials给出 ...

  5. Python【操作EXCEL文件】

    #Python中,对EXCEL文件的读写操作需要安装.导入几个第三方模块#xlrd模块:只能读取EXCEL文件,不能进行写操作#xlwt模块:只能进行写操作,但是不能是覆盖写操作(也就是修改Excel ...

  6. python中的文件操作(2)

    a+,w+,r+的特点: r+:r+模式允许读和写,当对文件句柄只进行写操作时,tell(),seek()为写操作的‘指针’(也就是写到seek()处). 当只进行读操作时,tell(),seek() ...

  7. 外网IP和内网IP的区别

    这两天遇到一个bug,折腾的够呛,已经上线的项目,出现了个人登录不上的情况,瞬间整个人都不好了,首先找问题,在本地和测试服务器上都没问题,打包发布到正式环境就出现问题了,刚开始我看不了日志,日志要找别 ...

  8. 穷竭搜索: POJ 2718 Smallest Difference

    题目:http://poj.org/problem?id=2718 题意: 就是输入N组数据,一组数据为,类似 [1  4  5  6  8  9]这样在0~9之间升序输入的数据,然后从这些数据中切一 ...

  9. 兼容firefox,ie,谷歌,阻止浏览器冒泡事件,Firefox不支持event解决方法

    兼容firefox,ie,谷歌,阻止浏览器冒泡事件,Firefox不支持event解决方法 // 获取事件function getEvent(){ if(window.event) {return w ...

  10. 29、HashSet简介

    Set的特点 Set里面存储的元素不能重复,没有索引,存取顺序不一致. package com.monkey1024.set; import java.util.HashSet; /** * Set的 ...