F 度度熊學佇列 HDU 6375

2021-08-25 22:40:40 字數 2365 閱讀 8992

度度熊正在學習雙端佇列,他對其翻轉和合併產生了很大的興趣。 

初始時有 [math processing error]n 個空的雙端佇列(編號為 [math processing error]1 到 [math processing error]n ),你要支援度度熊的 [math processing error]q 次操作。 

①[math processing error]1 [math processing error]u [math processing error]w [math processing error]val 在編號為 [math processing error]u 的佇列裡加入乙個權值為 [math processing error]val 的元素。([math processing error]w=0 表示加在最前面,[math processing error]w=1 表示加在最後面)。 

②[math processing error]2 [math processing error]u [math processing error]w 詢問編號為 [math processing error]u 的佇列裡的某個元素並刪除它。( [math processing error]w=0 表示詢問並操作最前面的元素,[math processing error]w=1 表示最後面) 

③[math processing error]3 [math processing error]u [math processing error]v [math processing error]w 把編號為 [math processing error]v 的佇列「接在」編號為 [math processing error]u 的佇列的最後面。[math processing error]w=0 表示順序接(佇列 [math processing error]v 的開頭和佇列 [math processing error]u 的結尾連在一起,佇列[math processing error]v 的結尾作為新佇列的結尾), [math processing error]w=1 表示逆序接(先將佇列 [math processing error]v 翻轉,再順序接在佇列 [math processing error]u 後面)。且該操作完成後,佇列 [math processing error]v 被清空。

input

有多組資料。 

對於每一組資料,第一行讀入兩個數 [math processing error]n 和 [math processing error]q。 

接下來有 [math processing error]q 行,每行 [math processing error]3~[math processing error]4 個數,意義如上。 

[math processing error]n≤150000,q≤400000 

[math processing error]1≤u,v≤n,0≤w≤1,1≤val≤100000 

所有資料裡 [math processing error]q 的和不超過[math processing error]500000 

output

對於每組資料的每乙個操作②,輸出一行表示答案。 

注意,如果操作②的佇列是空的,就輸出[math processing error]−1且不執行刪除操作。

sample input

2 10

1 1 1 23

1 1 0 233

2 1 1

1 2 1 2333

1 2 1 23333

3 1 2 1

2 2 0

2 1 1

2 1 0

2 1 1

sample output

23

-12333

23323333

提示由於讀入過大,c/c++ 選手建議使用讀入優化。

乙個簡單的例子:

void read(int &x)

#include#include#include#include#includeusing namespace std;

#define mem(a,b) memset(a,b,sizeof(a))

const int maxn=15e4+10;

int n,m,w;

map> a;

void read(int &x)

int main()

else if(ki==2)

else

else}}

else

else a[u].insert(a[u].end(),a[v].begin(),a[v].end()),a[v].clear();}}

}return 0;

}

度度熊學佇列 HDU 6375

度度熊正在學習雙端佇列,他對其翻轉和合併產生了很大的興趣。初始時有 nn 個空的雙端佇列 編號為 11 到 nn 你要支援度度熊的 qq 次操作。11 uu ww valval 在編號為 uu 的佇列裡加入乙個權值為 valval 的元素。w 0w 0 表示加在最前面,w 1w 1 表示加在最後面 ...

度度熊學佇列 HDU 6375

度度熊正在學習雙端佇列,他對其翻轉和合併產生了很大的興趣。初始時有 nn 個空的雙端佇列 編號為 11 到 nn 你要支援度度熊的 qq 次操作。11 uu ww valval 在編號為 uu 的佇列裡加入乙個權值為 valval 的元素。w 0w 0 表示加在最前面,w 1w 1 表示加在最後面 ...

B 度度熊學佇列 HDU 6375

度度熊正在學習雙端佇列,他對其翻轉和合併產生了很大的興趣。初始時有 n 個空的雙端佇列 編號為 1 到 n 你要支援度度熊的 q 次操作。1 u w val 在編號為 u 的佇列裡加入乙個權值為 val 的元素。w 0 表示加在最前面,w 1 表示加在最後面 2 u w 詢問編號為 u 的佇列裡的某...