佇列安排 洛谷

2021-10-03 01:57:18 字數 717 閱讀 7902

思路:這個就是一道模擬二叉樹的題。反正我是這麼理解的。

首先建立乙個結構體陣列,包含左孩子,右孩子,以及乙個變數用來標記後面他是否被刪除了。

然後就是插入的時候先判斷p(根據題目),判斷完p之後還要判斷k的左右孩子。

舉個栗子:比如說i為2,k為3,p為1.那麼現在2要往3的右邊插隊,你就首先要判斷3原先右邊有沒有數,沒有就直接插,有的話就是吧3的右孩子賦給2的右孩子,然後把3的右孩子變成2.

到這裡,整個二叉樹就算是模擬完了。然後就是刪除結點,刪乙個把結構體裡面標記變數變一下就可以了;

最後就是遞迴輸出,先搜它左邊,搜到頭後開始輸出,緊接著搜他右邊。

**如下:

#include

using namespace std;

int n,m,k,x;

struct noded[100010]

;void dfs(int i) //乙個我自己都不知道自己在哪的遞迴

int main(

)else d[k].r=i;

else

if(d[k].l)

else d[k].l=i;

} cin>>m;

while(m--)

dfs(1)

;}

洛谷 1160 佇列安排

題目描述 乙個學校裡老師要將班上n個同學排成一列,同學被編號為1 n,他採取如下的方法 1.先將1號同學安排進佇列,這時佇列中只有他乙個人 2.2 n號同學依次入列,編號為i的同學入列方式為 老師指定編號為i的同學站在編號為1 i 1 中某位同學 即之前已經入列的同學 的左邊或右邊 3.從佇列中去掉...

洛谷 任務安排

初見安 這裡是傳送門 洛谷p2365 n個任務排成乙個序列在一台機器上等待完成 順序不得改變 這n個任務被分成若干批,每批包含相鄰的若干任務。從時刻0開始,這些任務被分批加工,第i個任務單獨完成所需的時間是ti。在每批任務開始前,機器需要啟動時間s,而完成這批任務所需的時間是各個任務需要時間的總和 ...

洛谷 P1160 佇列安排

題目描述 乙個學校裡老師要將班上n個同學排成一列,同學被編號為1 n,他採取如下的方法 1.先將1號同學安排進佇列,這時佇列中只有他乙個人 2.2 n號同學依次入列,編號為i的同學入列方式為 老師指定編號為i的同學站在編號為1 i 1中某位同學 即之前已經入列的同學 的左邊或右邊 3.從佇列中去掉m...