區間最值問題

2021-06-27 15:18:53 字數 899 閱讀 2108

★實驗任務

已知乙個有 n 個數序列 a[i] ,在序列 a 中的區間 [l,r] 中的最小值為 a[p] , 求

a[p]*(a[l]+a[l+1]+...+a[r]) 的最大值為多少?

★資料輸入

第一行是乙個整數 n

第二行為 n 個整數對應 a[i]

對於 50%資料

1 <= n <= 5000

對於 100%資料

1 <= n <= 100 000

1<=a[i]<=1000000

★資料輸出

如題意所示

輸入示例        輸出示例

6              60

3 1 6 4 5 2

# include# define max 100002  

int start [max];

int end[max];

__int64 data[max];

__int64 sum[max];

int main()

else

j = start[j] - 1;

} }

for(i=n;i>=1;i--)

else

j = end[j] + 1;

} }

sum[0] = 0;

for(i=1;i<=n;i++)

sum[i] = sum[i-1] + data[i];

__int64 answer = -1;

for(i=1;i<=n;i++)

printf("%i64d\n",answer);

} return 0;

}

區間最值問題

問題描述 給定m及n個數 1輸出每m個數中的最大數,即1m中的最大數,2m 1中的最大數 n m 1 n中的最大數,共n m 1個。陣列 將讀入的資料放到乙個線性表f陣列中,然後列舉開始點i,遍歷求出區間 i,i m 1 中最大值。堆 將資料組織成樹型結構,即將讀入的數值設計成乙個大根堆,則堆頂元素...

RMQ(區間最值問題)

1 概述 lca least common ancestors 即最近公共祖先,是指這樣乙個問題 在有根樹中,找出某兩個結點u和v最近的公共祖先 另一種說法,離樹根最遠的公共祖先 rmq range minimum maximum query 即區間最值查詢,是指這樣乙個問題 對於長度為n的數列a,...

RMQ問題(區間最值查詢)

有一類問題被稱作區間最值問題,描述的是,給定 n 個元素,需要查詢下標位於 p q 之間的最大 小值。首先確定,針對每一次查詢,肯定是不能動態求最值的,因為每次都要計算,可能造成比較多的時間耗費。有 一種比較好的解決辦法是,先得到所有結果,在查詢時直接取出結果。這樣,就需要一種資料結構,能夠覆蓋所有...