HDU5696 區間的價值

2022-05-24 08:12:12 字數 997 閱讀 9016

傳送門

一句話題意:求1~n長度區間最大值與最小值之乘積的最大值(保證資料隨機)

time cost: 45min

solution:

比較基本的題 

首先統計答案可以針對每個點更新所有長度 這樣可以單調

然後...然後就不會了

發現是資料隨機 所以可以亂搞

對於每個點作為最大值 類似尺取法的方式更新最小值和答案

這樣一般情況下複雜度隨資料波動性變化 單調性越強越涼

code:

1 #include2 #include3 #include4 #include5 #include6 #include7

#define b puts("ggggggg");

8#define ms(a,b) memset(a,b,sizeof a)

9#define rep(i,a,n) for(int i = a;i <= n;i++)

10#define per(i,n,a) for(int i = n;i >= a;i--)

11#define inf 2147483647

12using

namespace

std;

13 typedef long

long

ll;14

ll read()

21while(c >= '

0' && c <= '9'

) 25

return

as *fu;26}

27const

int n = 110003;28

//head

29int

n;30

ll a[n],dp[n];

31int

main() 47}

48 rep(i,1,n) printf("

%lld\n

",dp[i]);49}

50return0;

51 }

HDU 5696 區間的價值

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

HDU 5696 區間的價值 暴力

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

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

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