P1750 出棧序列

2021-10-03 17:57:12 字數 1119 閱讀 5458

題目描述

給定乙個由n個元素構成的序列,你需要將其中的元素按順序壓入乙個大小為c的棧並彈出。元素按它們的出棧順序進行排列,會得到乙個新的序列。我們知道,這樣的序列會有很多種,請輸出所有新序列中第乙個元素最小的序列(若第乙個元素最小的序列有多個,則令第二個盡可能小;若仍有多個,則令第三個最小,以此類推)。

輸入格式

第一行,兩個數n,c

第二行n個數,為序列中n個元素的值

輸出格式

輸出n個數,為滿足要求的序列。

輸入輸出樣例

輸入 #1 複製

6 35 2 3 8 7 4

輸出 #1 複製

2 3 5 4 7 8

說明/提示

對於40%的資料,n<=12

對於100%的資料,c<=n<=10000,元素大小均在2*10^9以內。

用棧模擬 棧棧棧

#include

using

namespace std;

#define n 10005

stack<

long

long

>s;

long

long a[n]

;int

main()

int lens = s.

size()

, minp;

//lens:棧的長度 minp:棧內最小元素的下標

int len = c - lens;

//len:可入棧的元素個數

int tmp = s.

top();

//tmp:參考元素

for(

int i=x; i<=x+len-

1&& i<=n; i++)}

if(tmp != s.

top())

else

loc++

;//累計出去的數

cout <

< s.

top(

)<

<

" ";

s.pop();

}while

(!s.

empty()

)return0;

}

Luogu P1750 出棧序列

一眼 萬年 貪心 minn設小調不出來祭 首先要保證更靠前的輸出更小 那麼容易想到,對於之後可能入棧的元素 即棧的剩餘空間仍能裝下的所有元素 我們可以取其中的最小值minn,和棧頂元素 top 比較 如果minn 否則一直彈出棧頂直到棧空或top minn include include inclu...

棧(出棧序列)

已知自然數1,2,n 1 n 10000 依次入棧 即a1 c2,cn 是否為可能的出棧序列。例如 n 5時,3,4,2,1,5是乙個可能的出棧序列,因為其可以按如下操作獲得 push 1,push 2,push 3,pop,push 4,pop,pop,pop,push 5,pop input 輸...

棧 出棧序列判定

給乙個初始的入棧序列,其次序即為元素的入棧次序,棧頂元素可以隨時出棧,每個元素只能入棧依次。輸入乙個入棧序列,後面依次輸入多個序列,請判斷這些序列是否為所給入棧序列合法的出棧序列。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的乙個出棧序列,但4,3,5,1,2就...