Shurikens 思維 倒序棧模擬

2021-10-25 05:48:23 字數 712 閱讀 8595

思路:正著去找的時候要先找到下面的-號再來確定上面的+的加號的內容而且連續的「-」的時候上面的要最小,有點類似棧。嘗試倒著思考。

從後往前,當前stack為空的時候或者當前棧頂元素》要入棧的元素的時候,該操作是合法的,那麼入棧。否則不合法。

當遇到+的時候,意味著有乙個元素要踢掉了,把踢掉的這個元素記錄下來。然後取出棧頂元素。

最後統一輸出。

這樣做的合法性:

倒序的時候就思考我們已經放好了所有足夠的空攤位。就看當前空攤位怎麼分配。

最後面進來的數要在其對應的區間內放。

比如-2

-3-1

-44要放在第4/3個+,1要放在4/3+,3放第1/2+,2放第1/2+。

也就是在取的數是合法的情況下,要放到能放得下的合法的攤位中。

#include#include#include#include#include#include#include#include#include#include#define debug(a) cout<<#a<<"="struct pshu[maxn];

int main(void)

else if(str=='-')

} for(ll i=2*n;i>=1;i--)

else if(shu[i].op=='+')

} else

cout

}

思維題 倒序差分的運用

筱瑪是乙個熱愛線段樹的好筱瑪。筱瑪的爺爺馬爺在遊戲中被筱瑪吊打了,於是他惱羞成怒,決定給筱瑪出這樣一道資料結構題 給定乙個長度為n nn的陣列a aa,剛開始每一項的值均為0 00。支援以下兩種操作,操作共m mm次 1 l r 1 l r1 l r 將al ar al aral ar的每一項的值加...

純C用棧實現倒序輸出字串

無聊看到csdn有人問用c言語用棧實現倒序輸出字串。示例中用空格作為字串的分隔符。include include define err value 1 引數錯誤 define err memory 2 記憶體錯誤 define ok 0 define true 1 define false 0 de...

利用乙個棧倒序另外乙個棧中的數

題目 有兩個相同的棧a和b,在棧a中存放著從大到小的數 1,2,3,4,5,棧頂為最小數1,另外乙個棧b為空的。現在要求不使用其他的資料結構,將棧a中的數字順序倒過來,使其棧頂的數為最大值5。include include include using namespace std template v...