1. 程式人生 > >RMQ(區間最值問題)

RMQ(區間最值問題)

ont 技術分享 要求 span max image range style 問題

問題:

  RMQ (Range Minimum/Maximum Query)問題是指:對於長度為n的數列A,回答若幹詢問RMQ(A,i,j)(i,j<=n),返回數列A中下標在i,j裏的最小(大)值,也就是說,RMQ問題是指求區間最值的問題。

dp思想:

  dp[i][j]中存儲的是從第j個數開始的2i個數最大的數。(如下圖)

技術分享圖片

  dp[2][1]表示的是1到1+22-1中最大的數。即下表1-4中最大的數。

  如果要求1-6中最大的數,可以先將區間拆成兩個2x長度的字串,分別求字串的最大值。1-6可以拆分成1-4和3-6這兩個序列長度都為4.所以直接比較dp[2][1]和dp[2][3]即可。

dp代碼:

RMQ(區間最值問題)