HDU 5696 區間的價值 暴力

2022-03-31 15:08:36 字數 913 閱讀 5378

我們定義「區間的價值」為一段區間的最大值*最小值。

乙個區間左端點在l,右端點在r,那麼該區間的長度為(r−l+1)。

現在聰明的傑西想要知道,對於長度為k的區間,最大價值的區間價值是多少。

當然,由於這個問題過於簡單。

我們肯定得加強一下。

我們想要知道的是,對於長度為1∼n的區間,最大價值的區間價值分別是多少。

樣例解釋:

長度為1的最優區間為2−2 答案為6∗6

長度為2的最優區間為4−5 答案為4∗4

長度為3的最優區間為2−4 答案為2∗6

長度為4的最優區間為2−5 答案為2∗6

長度為5的最優區間為1−5 答案為1∗6

多組測試資料

第一行乙個數n(1≤n≤100000)。

第二行n個正整數(1≤ai≤109),下標從1開始。

由於某種不可抗力,ai的值將會是1∼109內隨機產生的乙個數。(除了樣例)

輸出共n行,第i行表示區間長度為i的區間中最大的區間價值。

51 6 2 4 4

3616

1212

6資料全隨機有什麼好說的呢?n^2的演算法很顯然,剪剪枝就過了

直接暴力列舉哪乙個數是這個區間的最大值就好了

然後左右擴充套件,然後暴力莽一波就好了……

#includeusing namespace std;

const int maxn = 1e5+6;

int n;

long long a[maxn];

long long dp[maxn];

void solve()

}for(int i=1;i<=n;i++)printf("%lld\n",dp[i]);

}int main()

HDU 5696 區間的價值

我們定義 區間的價值 為一段區間的最大值 最小值。乙個區間左端點在 l 右端點在 r 那麼該區間的長度為 r l 1 現在聰明的傑西想要知道,對於長度為 k 的區間,最大價值的區間價值是多少。當然,由於這個問題過於簡單。我們肯定得加強一下。我們想要知道的是,對於長度為 1 n的區間,最大價值的區間價...

HDU5696 區間的價值

傳送門 一句話題意 求1 n長度區間最大值與最小值之乘積的最大值 保證資料隨機 time cost 45min solution 比較基本的題 首先統計答案可以針對每個點更新所有長度 這樣可以單調 然後.然後就不會了 發現是資料隨機 所以可以亂搞 對於每個點作為最大值 類似尺取法的方式更新最小值和答...

HDU5696 區間的價值(分治 單調佇列)

題目 定義區間的價值為這個區間內最大值和最小值的乘積。給定乙個序列,求這個序列的每個長度的區間價值的最大值。所有測試資料嚴格隨機。思路 初學分治,感覺挺不好想出來,參考了一下別人的思路。因為要求每個區間最大值和最小值的乘積,先固定最小值,然後列舉最大值,由於確定了最小的一邊,隨著長度增加,區間的價值...