對於單調棧,則是乙個單調的棧,為什麼可以把複雜度減小為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 按照正常的情況,如果我們要建...
前端進一步理解
非常開心能夠在這裡作工作匯報和個人總結,這是我鼓起勇氣的結果,算是成功了一半,呵呵。從剛來公司茫然失措的菜蛋到現在稍顯成熟的菜鳥,我知道我離成功又進了一步。以下是我對前端的理解和對自己這段時間的總結 一 前端職責 前端開發是由網頁製作演變而來的,它的主要職能就是把 的介面更好地呈現給使用者,主要包括...