deque雙向佇列

2021-09-17 21:44:17 字數 1327 閱讀 7661

洛谷 p2952 牛線

約翰的n只奶牛(編為1到n號)正在直線上排隊.直線上開始的時候乙隻牛也沒有.接下來發生了s(1≤s≤100000)次事件,一次事件可能是以下四種情況之一:

.乙隻奶牛加入隊伍的左邊(輸入「al」).

.乙隻奶牛加入隊伍的右邊(輸入「ar」).

·k只隊伍左邊奶牛離開(輸入「dlk」).

·k只隊伍右邊奶牛離開(輸入「drk」).

請求出最後的隊伍是什麼樣.

資料保證離開的奶牛不會超過隊伍裡的奶牛數,最後的隊伍不空

由左到右輸出隊伍最後的情況.

輸入輸出樣例

輸入樣例#1:

10a l

a la r

a ld r 2

a ra r

d l 1

a la r

輸出樣例#1:72

568說明

a l 1

a l 2 1

a r 2 1 3

a l 4 2 1 3

d r 2 4 2

a r 4 2 5

a r 4 2 5 6

d l 1 2 5 6

a l 7 2 5 6

a r 7 2 5 6 8

#include #includeusing namespace std;

int main()

{ dequeq;

int n,z;

char a,b;

scanf("%d",&n);

int k=1;

for(int i=0; i>a>>b;

if(a=='a'&&b=='l')

q.push_front(k++);

if(a=='a'&&b=='r')

q.push_back(k++);

if(a=='d'&&b=='r')

{scanf("%d",&z);

for(int j=0; jclear():清空佇列

push_back():從尾部插入乙個元素。

push_front():從頭部插入乙個元素。//deque雙端佇列的先進就在這裡,它可以兩端都支援同樣的操作。

size():返回佇列元素個數

front():返回佇列首部元素。

back():返回尾部元素。

pop_back():彈出隊尾元素。

pop_front():彈出隊首元素。

empty():檢查佇列是否為空。

deque 的時間複雜度可能比較高,平時練習佇列的時候能手打最好避免使用,比賽時需要合理考慮時間複雜度酌情使用。

deque雙向佇列

deque雙向佇列是一種雙向開口的連續線性空間,可以高效的在頭尾兩端插入和刪除元素,deque在介面上和vector非常相似,下面列出deque的常用成員函式 deque的實現比較複雜,內部會維護乙個map 注意!不是stl中的map容器 即一小塊連續的空間,該空間中每個元素都是指標,指向另一段 較...

deque雙向佇列

deque雙向佇列是一種雙向開口的連續線性空間,可以高效的在頭尾兩端插入和刪除元素,deque在介面上和vector非常相似,下面列出deque的常用成員函式 deque的實現比較複雜,內部會維護乙個map 注意!不是stl中的map容器 即一小塊連續的空間,該空間中每個元素都是指標,指向另一段 較...

deque雙向佇列

deque雙向佇列是一種雙向開口的連續線性空間,可以高效的在頭尾兩端插入和刪除元素,deque在介面上和vector非常相似,下面列出deque的常用成員函式 deque的實現比較複雜,內部會維護乙個map 注意!不是stl中的map容器 即一小塊連續的空間,該空間中每個元素都是指標,指向另一段 較...