單調棧的進一步理解,poj2796

2021-06-29 01:56:47 字數 981 閱讀 3309

對於單調棧,則是乙個單調的棧,為什麼可以把複雜度減小為0(n);;主要是在求以乙個數為最小的區間和的時候,可以在資料處理時構建乙個單調棧,已知乙個單調的棧,再往下面壓入乙個數時,如果不滿足單調性,則表明暫棧頂元素最小的區間已經結束了,那麼就pop出來,如果棧頂第二個元素也不滿足單調性,那麼也壓出,但是由於棧頂第乙個元素肯定在第二個的最小區間內(應為大於倒數第二個)所以要建立乙個tmp,儲存這個元素之前的pop出的值得和,而在pop後面的值時,則是加上tmp,也就會吧之前比他大的一起加上了;;;

所以只要對最後的棧頂元素一步一步處理就可以得到所需要的和

poj2796**::

#include #include using namespace std;

const int n = 100005;

struct elem

;elem stack[n];

int top;

int main()

tmp += stack[top - 1].height;

count = stack[top - 1].count;

--top;

} stack[top].height = num + tmp;

stack[top].width = num;

stack[top].begin = i + 1 - count;

stack[top].count = 1 + count;

++top;

} tmp = 0;

count = 0;

while (top > 0)

tmp += stack[top - 1].height;

count = stack[top - 1].count;

--top;

} printf("%lld\n%d %d\n", ans, ansbeg, ansend);

return 0;

}

**非原創;;

bufferedReader進一步理解

public static void main string args string mystring system.out.println 請輸入明文 bufferedreader buf new bufferedreader new inputstreamreader system.in try...

進一步理解委託

前面一篇文章介紹了委託的基本知識,接下來就進一步研究一下委託。其實,剛開始覺得委託型別是乙個比較難理解的概念,怎麼也不覺得下面的 assembleiphonehandler 是乙個型別。public delegate void assembleiphonehandler 按照正常的情況,如果我們要建...

前端進一步理解

非常開心能夠在這裡作工作匯報和個人總結,這是我鼓起勇氣的結果,算是成功了一半,呵呵。從剛來公司茫然失措的菜蛋到現在稍顯成熟的菜鳥,我知道我離成功又進了一步。以下是我對前端的理解和對自己這段時間的總結 一 前端職責 前端開發是由網頁製作演變而來的,它的主要職能就是把 的介面更好地呈現給使用者,主要包括...