題目:定義區間的價值為這個區間內最大值和最小值的乘積。給定乙個序列,求這個序列的每個長度的區間價值的最大值。所有測試資料嚴格隨機。
思路:初學分治,感覺挺不好想出來,參考了一下別人的思路。因為要求每個區間最大值和最小值的乘積,先固定最小值,然後列舉最大值,由於確定了最小的一邊,隨著長度增加,區間的價值只可能變大,因此可以用短的區間值更新長的區間值。如果區間的最大價值不包含這個最小值,就以這個最小值為中點,同樣策略遞迴地處理兩邊,在分治的過程中不斷更新結果。
#includeusing namespace std;
typedef long long ll;
int a[100005];
ll tmp[100005],ans[100005];
void solve(int l,int r)
int main()
}ans=maxx*minn;
printf("%lld\n",ans);//長度為1的區間直接輸出最大值即可
for(int i=2;i<=n;++i)//剪枝,上一次的結果可能也是這一次的結果
if(r=minn)//剪枝
int l1=0,l2=0,r1=-1,r2=-1;
ans=0;
for(int j=1;j<=n;++j)
}printf("%lld\n",ans);}}
}
HDU 5696 區間的價值
我們定義 區間的價值 為一段區間的最大值 最小值。乙個區間左端點在 l 右端點在 r 那麼該區間的長度為 r l 1 現在聰明的傑西想要知道,對於長度為 k 的區間,最大價值的區間價值是多少。當然,由於這個問題過於簡單。我們肯定得加強一下。我們想要知道的是,對於長度為 1 n的區間,最大價值的區間價...
HDU5696 區間的價值
傳送門 一句話題意 求1 n長度區間最大值與最小值之乘積的最大值 保證資料隨機 time cost 45min solution 比較基本的題 首先統計答案可以針對每個點更新所有長度 這樣可以單調 然後.然後就不會了 發現是資料隨機 所以可以亂搞 對於每個點作為最大值 類似尺取法的方式更新最小值和答...
HDU 5696 區間的價值 暴力
我們定義 區間的價值 為一段區間的最大值 最小值。乙個區間左端點在l,右端點在r,那麼該區間的長度為 r l 1 現在聰明的傑西想要知道,對於長度為k的區間,最大價值的區間價值是多少。當然,由於這個問題過於簡單。我們肯定得加強一下。我們想要知道的是,對於長度為1 n的區間,最大價值的區間價值分別是多...