hdu5818棧的操作

2021-07-16 09:31:14 字數 732 閱讀 5176

比較簡單巧妙的乙個做法是引入乙個新的棧c,每次合併的時候就把a和b合併到c上,然後把a和b都清空. push還是按正常做,pop注意當遇到要pop的棧為空時,因為題目保證不會對空棧進行pop操作,所以這時應直接改為對c棧進行pop操作. 這樣做因為保證每個元素最多隻在一次合併中被處理到,pop和push操作當然也是每個元素只做一次,所以總複雜度是o(n)的. 另一種做法是用鍊錶來直接模擬,複雜度也是o(n),但**量稍大一些.

#include 

#include

#include

using

namespace

std;

typedef pair p;

stack

a,b,c,d;

int n;

int cnt;

int main()

else

if (strcmp(tmp,"pop")==0)

else

}else

if (c1=='b')

else

}printf("%d\n",x);

}else

if (strcmp(tmp,"merge")==0)

else

}while(!a.empty())

while(!b.empty())

while(!c.empty())}}

}return

0;}

HDU 5818 多校 7 模擬

題意 對棧的操作,有兩個棧 a b然後接下來n組操作包括入棧,出棧,合併棧。合併棧按入棧的時間順序進行排序。官方題解 比較簡單巧妙的乙個做法是引入乙個新的棧 c 每次合併的時候就把a和 b 合併到 c上,然後把 a 和 b都清空.pu sh還是按正常做,po p 注意當遇到要pop的棧為空時,因為題...

HDU 1022 棧的基本操作應用

首先先介紹下c stl 中的 stack.stack也是程式設計中常常用到的資料容器,stl為我們提供了stack的實現,因此在使用stack時必須包含標頭檔案 include,並使用統一命名空間。1.宣告乙個stack stacks1 stacks2 stacks3 stack模板類需要2個模板引...

棧(一) 棧的基本操作

1.棧的簡介 棧是一種後入先出的資料結構,一般包含兩種最基本的操作 入棧 push 和出棧 pop 入棧操作 top指標上移,元素入棧。出棧操作 top指標下移。棧空的條件 top bottom 棧滿的條件 top maxsize 1 2.有資料序列1 2 3一次存入乙個棧stack中,則出棧順序可...