日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HDU 5696 区间的价值 暴力

發布時間:2025/7/14 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HDU 5696 区间的价值 暴力 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

區間的價值

題目連接:

http://acm.hdu.edu.cn/showproblem.php?pid=5696

Description

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

一個區間左端點在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

Input

多組測試數據

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

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

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

Output

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

Sample Input

5
1 6 2 4 4

Sample Output

36
16
12
12
6

Hint

題意

題解:

數據全隨機有什么好說的呢?n^2的算法很顯然,剪剪枝就過了

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

然后左右擴展,然后暴力莽一波就好了……

代碼

#include<bits/stdc++.h> using namespace std; const int maxn = 1e5+6; int n; long long a[maxn]; long long dp[maxn]; void solve() {memset(dp,0,sizeof(dp));for(int i=1;i<=n;i++)scanf("%lld",&a[i]);for(int i=1;i<=n;i++){dp[1]=max(dp[1],a[i]*a[i]);int l=i,r=i;long long Min=a[i];while(1){if(r-l+1==n)break;if((l!=1)&&(r==n||a[l-1]>a[r+1]))Min=min(Min,a[--l]);else Min=min(Min,a[++r]);if(a[l]>a[i]||a[r]>a[i])break;dp[r-l+1]=max(dp[r-l+1],a[i]*Min);}}for(int i=1;i<=n;i++)printf("%lld\n",dp[i]); } int main() {while(scanf("%d",&n)!=EOF)solve(); }

轉載于:https://www.cnblogs.com/qscqesze/p/5522325.html

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的HDU 5696 区间的价值 暴力的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。