洛谷 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容器 即一小塊連續的空間,該空間中每個元素都是指標,指向另一段 較...