HDU 5818 多校 7 模擬

2021-07-16 10:12:25 字數 1130 閱讀 8132

題意:對棧的操作,有兩個棧

a ,

b然後接下來n組操作包括入棧,出棧,合併棧。合併棧按入棧的時間順序進行排序。

官方題解:比較簡單巧妙的乙個做法是引入乙個新的棧

c ,每次合併的時候就把a和

b 合併到

c上,然後把

a 和

b都清空. pu

sh還是按正常做,po

p 注意當遇到要pop的棧為空時,因為題目保證不會對空棧進行pop操作,所以這時應直接改為對

c 棧進行po

p操作. 這樣做因為保證每個元素最多隻在一次合併中被處理到,pop和push操作當然也是每個元素只做一次,所以總複雜度是o(

n)的. 另一種做法是用鍊錶來直接模擬,複雜度也是o(

n),但**量稍大一些.

解題思路:比賽時怎麼想都想不出來,一直只想著是要合併兩個棧,但強行排序肯定是會tl

e 的,看了題解之後才知道原來這麼簡單,還是自己太弱了。直接用三個陣列進行模擬了一下。

ac**:

#include 

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

#define ll long long

#define maxn 100050

struct test

;test a[maxn];

test b[maxn];

test c[maxn];

int main()

else

}else

if(str1[1]=='e')///合併操作

else

}while(iawhile(ib0; idb=0;

}else

if(str1[1]=='o')///出隊操作

else}}

}return

0;}

hdu5818棧的操作

比較簡單巧妙的乙個做法是引入乙個新的棧c,每次合併的時候就把a和b合併到c上,然後把a和b都清空.push還是按正常做,pop注意當遇到要pop的棧為空時,因為題目保證不會對空棧進行pop操作,所以這時應直接改為對c棧進行pop操作.這樣做因為保證每個元素最多隻在一次合併中被處理到,pop和push...

hdu多校題解

給定 n 求 sum limits sum mu d frac sum frac 再令 h n sum frac 則有 g n frac sum mu d frac h frac 推導 f 和 g 的關係 f n f sum limits frac sum limits g n g f n f 2 ...

hdu多校(一)1009(棧模擬 數學)

leading robots 題意 已知機械人v t a tv t a t v t a t,現有n nn個機械人,給定機械人的當前位置pos itio nposition positi on,加速度a aa。問經過無限長的時間後,有多少個機械人當過第一位?思路 沒啥思路,最後肯定是a最大的機械人排在...