濟南學習 Day1 T2 pm

2022-02-11 20:48:01 字數 1239 閱讀 9849

【問題描述】

棧是一種強大的資料結構,它的一種特殊功能是對陣列進行排序。例如,借

助乙個棧,依次將陣列 1,3,2 按順序入棧或出棧,可對其從大到小排序:

1 入棧;3 入棧;3 出棧;2 入棧;2 出棧;1 出棧。

在上面這個例子中,出棧序列是 3,2,1,因此實現了對陣列的排序。

遺憾的是,有些時候,僅僅借助乙個棧,不能實現對陣列的完全排序。例如

給定陣列 2,1,3,借助乙個棧,能獲得的字典序最大的出棧序列是 3,1,2:

2 入棧;1 入棧;3 入棧;3 出棧;1 出棧;2 出棧。

請你借助乙個棧,對乙個給定的陣列按照出棧順序進行從大到小排序。當無

法完全排序時,請輸出字典序最大的出棧序列。

【輸入格式】

輸入共2行。

第一乙個整數n,表示入棧序列長度。

第二行包含n個整數,表示入棧序列。輸入資料保證給定的序列是1到 n 的全

排列,即不會出現重複數字。

【輸出格式】

僅一行,共n個整數,表示你計算出的出棧序列。

【樣例輸入】

32 1 3

【樣例輸出】

3 1 2

【樣例解釋】

這回山里有座塔。

【資料規模與約定】

3 3 。

60%的資料,1 ≤ n ≤ 10 ^5 。

對於100%的資料,1 ≤ n ≤ 10 ^6 。

1 #include2 #include3 #include4 #include5 #define maxn 100000

6using namespace std;

7int

q[maxn];

8int

a[maxn],n,vis[maxn],team;

9int

main()

1025

while(q[team]>k)

2630

while(a[head]!=k)

3136 printf("%d ",a[head]);

37 head++;k--;38}

39return 0;

40 }

思路:首先貪心最大的肯定要排在第乙個,即最大的之前的要全部push,接下來肯定是n-1這個數最大,如果他沒有進棧,那麼一直push到它進棧,如果它已經進棧,那麼比較棧頂與要進棧的最大數比較最大的輸出。後面最大的數直接用while判斷是否進棧即可。**是手寫的棧

濟南學習 Day 2 T2 pm

她 問題描述 給你l,r,s,m,求滿足l s x mod m r最小的正整數 x。輸入格式 第一行乙個數t代表資料組數。接下來一行每行四個數代表該組資料的l,r,s,m。輸出格式 對於每組資料,輸出一行代表答案。如果不存在解,輸出 1 樣例輸入 15 4 2 3 樣例輸出 2 樣例解釋 叫南小鳥。...

濟南學習 Day 2 T2 pm

她 問題描述 給你l,r,s,m,求滿足l s x mod m r最小的正整數 x。輸入格式 第一行乙個數t代表資料組數。接下來一行每行四個數代表該組資料的l,r,s,m。輸出格式 對於每組資料,輸出一行代表答案。如果不存在解,輸出 1 樣例輸入 15 4 2 3 樣例輸出 2 樣例解釋 叫南小鳥。...

濟南學習 Day 3 T1 pm

巧克力棒 chocolate time limit 1000ms memory limit 64mb 題目描述 lyk 找到了一根巧克力棒,但是這根巧克力棒太長了,lyk 無法一口吞進去。具體地,這根巧克力棒長為 n,它想將這根巧克力棒折成 n 段長為 1 的巧克力棒,然後 慢慢享用。它打算每次將一...