Range Minimum Queries のウィキペディアのリンクを読み、さらにいくつかのチュートリアル (topcoder およびその他のリンク) を見ましたが、非常に基本的な質問があります。
RMQ の正式な定義は次のとおりです: 順序付けられたセット (数値など) から取得されたオブジェクトの配列が与えられた場合、範囲最小クエリ (または RMQ) はサブ配列内の最小要素の位置を要求します。
私が理解できないのは、線形探索で問題を解決できないのはなぜですか? 配列 A[0...n] で、RMQ(i,j) が必要な場合
min = A[i]
index = i
for iter=i; iter <j; iter ++
if A[iter] <= min
min = A[iter]
index = iter;
ループの終わりまでに、最小値と最小値が存在するインデックスがわかります。
私は間違いなくここに何かが欠けています...なぜRMQが必要なのか誰かが理解するのを手伝ってくれますか?