Luogu P1750 出棧序列

2022-01-10 21:47:43 字數 513 閱讀 1877

一眼(萬年)貪心

minn設小調不出來祭

首先要保證更靠前的輸出更小

那麼容易想到,對於之後可能入棧的元素(即棧的剩餘空間仍能裝下的所有元素),我們可以取其中的最小值minn,和棧頂元素$top$比較

,如果minn

否則一直彈出棧頂直到棧空或top>minn

#include#include

#include

using

namespace

std;

const

int maxn=10010

;int

n,c,a[maxn],rest,pos;

stack

st;intmain()

if(st.empty()||minn//

棧為空或最小值小於棧頂元素值,就將最小元素前的元素全部入棧

}while(!st.empty())

printf("\n

");return0;

}

P1750 出棧序列

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

棧(出棧序列)

已知自然數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就...