洛谷P1160 佇列安排 鍊錶

2022-09-03 05:51:06 字數 1125 閱讀 9140

先有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在所有...