Luogu P1160队列安排【链表/老文搬家】By cellur925
原文发表于2018-04-15 08:15:09,我的luogu博客qwq。
看到题以后,要求维护一个可在任意位置修改添加删除元素的序列,那么显然我们可以用到链表。
然而本蒟蒻不久前刚刚学会链表。链表也是线性结构,和数组比较,它的物理内存不连续,逻辑内存连续。数组在任意位置插入删除元素效率极差,链表就很棒了。
下面是给和我一样蒟的老哥们。
链表通常用结构体存储,一个节点有三个值,前驱、后继、权值。
链表初始化
int init()
{
tot=;
head=;tail=;
node[head].next=tail;
node[tail].pre=head;
}
在p后插入新节点 注意是在后
void insert(int p,int r)//插在p的后面
{
q=++tot;
node[q].val=r;
node[node[p].next].pre=q;
node[q].next=node[p].next;
node[p].next=q;
node[q].pre=p;
}
删除一节点
void remove(int p)
{
node[node[p].pre].next=node[p].next;
node[node[p].next].pre=node[p].pre;
}
这些是链表的基本操作。
这道题需要有一些变动。
由于每个人按号依次进入,所以val值就是本身的序号。
由于可以向左插也可以向右插,写这句的时候要有一些改动。向右直接插,向左需要向 向左插的节点的前驱插。
最后输出尤为注意。不能输出权值!具体见代码。
code
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int n,m,q,tmp,rp;
int tot=;
int head;
bool b[];
struct linkb{
int val;
int pre,next;
}node[];
void insert(int p,int r)//插在p的后面
{
q=++tot;
node[q].val=r;
node[node[p].next].pre=q;
node[q].next=node[p].next;
node[p].next=q;
node[q].pre=p;
}
void remove(int p)
{
node[node[p].pre].next=node[p].next;
node[node[p].next].pre=node[p].pre;
}
int main()
{
b[]=;node[].val=;
node[].next=;
scanf("%d",&n);
for(int i=;i<=n;i++)
{
int x=,y=;
scanf("%d%d",&x,&y);
b[i]=;
if(y==)
{
insert(x,i);
}
else if(y==)
{
insert(node[x].pre,i);
}
}
scanf("%d",&m);
for(int i=;i<=m;i++)
{
int x=;
scanf("%d",&x);
if(b[x]==) continue;
b[x]=;
rp++;
remove(x);
}
head=node[].next;
//printf("%d ",node[head].val);
tmp=head;
for(int i=;i<=n-rp;i++)
{
printf("%d ",node[tmp].val);
tmp=node[tmp].next;
}
printf("\n");
return ;
}
Luogu P1160队列安排【链表/老文搬家】By cellur925的更多相关文章
- luogu P1160 队列安排
二次联通门 :luogu P1160 队列安排 /* luogu P1160 队列安排 链表 手动模拟一下就好了... */ #include <cstdio> #define Max 5 ...
- [Luogu 1160] 队列安排
Luogu 1160 队列安排 链表H2O H2O H2O模板. 太久不写链表,忘干净了,竟调了半个晚上. 保留备用. #include <cstdio> #include <cst ...
- 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 队列安排 luogu洛谷
题目描述 一个学校里老师要将班上NNN个同学排成一列,同学被编号为1∼N1\sim N1∼N,他采取如下的方法: 先将111号同学安排进队列,这时队列中只有他一个人: 2−N2-N2−N号同学依次入列 ...
- 洛谷——P1160 队列安排(链表的基础操作)
#include<bits/stdc++.h> using namespace std; ]; list<int> stus; list<];//用来存放每一项的迭代器 ...
- 洛谷 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的同学入列方式为:老师 ...
随机推荐
- Java子类重写父类方法注意问题收集(转)
子类不能重写父类的静态方法,私有方法.即使你看到子类中存在貌似是重写的父类的静态方法或者私有方法,编译是没有问题的,但那其实是你重新又定义的方法,不是重写.具体有关重写父类方法的规则如下: 重写规则之 ...
- 【神乎其神】这些EXCEL技巧,太神奇了,赶紧收藏!
转:http://learning.sohu.com/20160215/n437421658.shtml
- Web容器自己主动对HTTP请求中參数进行URLDecode处理
这篇文章转载自 : Web容器自己主动对HTTP请求中參数进行URLDecode处理 如题.在Java中或许非常多人都没有注意到当我们发送一个http请求时,假设附带的參数被URLEncode之后,到 ...
- JAVA原始的导出excel文件,快捷通用 方便 还能够导出word文档哦
如今导出excel基本上都是用poi了,当报表格式非常负责的时候 开发难度会加大 假设报表有格式有变化 那就更复杂了,先发现一个非常老的技术.能够解决格式复杂的报表. 实例代码例如以下: <%@ ...
- 一个基于JBoss5.1+EJB3.0 登陆应用
花了几天的时间研究了一下EJB的使用,一直以来都主要是在写终端中的程序,对Java框架的相关的开发非常不熟悉,中间遇到了不少麻烦,还好总算都攻克了.写篇日志记录一下. 经验总结 为什么选择JBoss5 ...
- hdu 3853(数学期望入门)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=3853 LOOPS Time Limit: 15000/5000 MS (Java/Others) ...
- 1.5.4 HAVING子句
1.5.4 HAVING子句正在更新内容.请稍后
- HDU 1160 FatMouse's Speed(DP)
题意 输入n个老鼠的体重和速度 从里面找出最长的序列 是的重量递增时速度递减 简单的DP 令d[i]表示以第i个老鼠为所求序列最后一个时序列的长度 对与每一个老鼠i 遍历全部老鼠j 当 ...
- web 开发之js---ajax 中的两种返回状态 xmlhttp.status和 xmlhttp.readyState
(1)xmlhttp.status xmlHttp.status的值(HTTP状态表)0**:未被始化 1**:请求收到,继续处理 2**:操作成功收到,分析.接受 3**:完成此请求必须进一步处理 ...
- bzoj3109【CQOI2013】新数独
3109: [cqoi2013]新数独 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 365 Solved: 229 [Submit][Statu ...