【問題描述】
棧是一種強大的資料結構,它的一種特殊功能是對陣列進行排序。例如,借
助乙個棧,依次將陣列 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 1000006using 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 的巧克力棒,然後 慢慢享用。它打算每次將一...