比較簡單巧妙的乙個做法是引入乙個新的棧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中,則出棧順序可...