什麼是rmq問題:
rmq (range minimum/maximum query):對於長度為n的陣列a,回答若干詢問rmq(a,i,j)(i,j<=n-1),返回陣列a中下標在i,j範圍內的最小(大)值,也就是說,rmq問題是指求區間最值的問題。
1.暴力法最簡單的方法,就是遍歷陣列直接搜尋,但是這種方式時間複雜度是o(n)。對於陣列長度較大,效能要求高的場景不適用。一般用這個演算法就等著tle,時間複雜度最壞o(q*n),也不一定超時,簽到題可能就直接讓你過了。
2.st(sparse table)演算法
st演算法是一種更加高效的演算法,基於動態規劃的思想,以o(nlogn)的預處理代價,換取o(1)的查詢時效能。但是,是離線的,也就是說每次修改都是o(nlogn)複雜度,那麼用在帶修的題目上就顯得捉襟見肘了。
3.樹狀陣列
從下向上更新,sum改為max/min即可,但是侷限性比較大吧,很少看見用樹狀陣列求最值的題解。
4.線段樹是基於分治的思想來實現的,建立是o(nlogn)查詢為o(logn),那麼也就是說這個可以進行修改,單點修改維護也是logn。
對於每種演算法,詳解馬上發布。
揹包問題 四種解法解題
分別用蠻力法 動態規劃法 回溯法和分支限界法求解0 1揹包問題。注 0 1揹包問題 給定種物品和乙個容量為的揹包,物品的重量是,其價值為,揹包問題是如何使選擇裝入揹包內的物品,使得裝入揹包中的物品的總價值最大。其中,每種物品只有全部裝入揹包或不裝入揹包兩種選擇。1 基本思想 對於有n種可選物品的0 ...
有關經典約瑟夫問題的四種解法
約瑟夫問題是資訊學奧賽中的一類經典且重要的題型,在平常的測試中屢屢出現。通常題設可抽象為 一開始有 n 個人圍成乙個圈,從 1 開始順時針報數,報出 m 的人被踢出遊戲.然後下乙個人再從 1 開始報數,直到只剩下乙個人。或者 曾經有個人在他身邊,然而現在只剩他乙個人。who are you who ...
農夫過河的四種解法
題目描述 有乙個農夫,帶著乙隻狼 乙隻羊 一顆白菜過河。其中農夫不在的時候狼會吃羊,羊會吃白菜。只有乙隻船,且每次農夫最多只能帶一樣物品過河。求解決方案。思路 1.過程回溯法。把人 狼 羊 白菜看成a b c d。過河的時候從abcd中選兩個過河,在 選乙個回來。若發生狼跟羊 羊跟白菜在同乙個岸邊,...