先有n
−1' role="presentation">n−1
n−1個入隊操作,每次兩個數
p' role="presentation">pp
x' role="presentation">x
x,表示第i+
1' role="presentation">i+1
i+1個人插入到第
p' role="presentation">p
p個人的左邊或右邊,然後
m' role="presentation">m
m個出隊操作,每次輸入
x' role="presentation">x
x,表示編號為
x' role="presentation">x
x的人出隊。如果已經出隊就忽視這次操作。求最終的佇列。
有插入和刪除兩個操作,很容易想到鍊錶。
每次插入操作,我們就把插入位置的左邊和右邊的
l' role="presentation">ll和
r' role="presentation">r
r更改,形成新的佇列;刪除操作就將左邊和右邊的
l' role="presentation">ll和
r' role="presentation">r
r改回去。最終利用形似鄰接表的方法輸出。
#include
using
namespace
std;
int n,x,y,s,m;
struct node
p[100001];
void insert_left(int x,int num) //往左插入
void insert_right(int x,int num) //往右插入
void delete_x(int x) //刪除操作
int main()
scanf("%d",&m);
while (m--)
}for (;p[s].r;s=p[s].r)
printf("%d ",p[s].num);
printf("%d",p[s].num); //輸出最後乙個
return
0;}
鍊錶 洛谷P1160 佇列安排
給定乙個一開始只有乙個人的序列,現要對其進行插入,刪除操作,求最後的序列 鍊錶是乙個支援任意位置插入,刪除的資料結構,所以我們可以用鍊錶完成本題 include using namespace std int n,s,x,m bool o struct node p 100001 inline vo...
洛谷 P1160 佇列安排
題目描述 乙個學校裡老師要將班上n個同學排成一列,同學被編號為1 n,他採取如下的方法 1.先將1號同學安排進佇列,這時佇列中只有他乙個人 2.2 n號同學依次入列,編號為i的同學入列方式為 老師指定編號為i的同學站在編號為1 i 1中某位同學 即之前已經入列的同學 的左邊或右邊 3.從佇列中去掉m...
洛谷P1160 佇列安排
乙個學校裡老師要將班上n個同學排成一列,同學被編號為1 n,他採取如下的方法 1.先將1號同學安排進佇列,這時佇列中只有他乙個人 2.2 n號同學依次入列,編號為i的同學入列方式為 老師指定編號為i的同學站在編號為1 i 1中某位同學 即之前已經入列的同學 的左邊或右邊 3.從佇列中去掉m m在所有...