給定乙個陣列序列,使得區間經過如下計算的值是所有區間中最大的:區間中的最小數*區間所有數的和
如[6,2,1],則求出區間為[6]
輸入:
3 6 2 1
輸出:
36大體思路:
給定乙個陣列序列,
使得區間經過如下計算的值是所有區間中最大的:
區間中的最小數*區間所有數的和
如[6,2,1],則求出區間為[6]
輸入:
3 6 2 1
輸出:
36大體思路: 把每個數字看成最小值,
因為所有數大於0,符合條件的區間越大值越高
掃左掃右,得到邊界(第乙個小於arr[i]的)
最後依次判斷得到答案
public
class
test else
}//左邊界
for (int j = i-1; j >= 0;j--) else
}ans = math.max(ans,sum[i]*arr[i]);
}return ans;
}}
1174 區間中最大的數
1174 區間中最大的數 時間限制 1 秒 空間限制 65536 kb 分值 0 給出乙個有n個數的序列,編號0 n 1。進行q次查詢,查詢編號i至j的所有數中,最大的數是多少。例如 1 7 6 3 1。i 1,j 3,對應的數為7 6 3,最大的數為7。該問題也被稱為rmq問題 input 第1行...
51Nod 1174 區間中最大數
acm模版 給出乙個有n個數的序列,編號0 n 1。進行q次查詢,查詢編號i至j的所有數中,最大的數是多少。例如 1 7 6 3 1。i 1,j 3,對應的數為7 6 3,最大的數為7。該問題也被稱為rmq問題 input 第1行 1個數n,表示序列的長度。2 n 10000 第2 n 1行 每行1...
51Nod 1174區間中最大值
題目要求,先輸入乙個陣列,然後求出陣列中某乙個區間中的最大值。是不是覺得,我就直接用for迴圈就可以寫啦,賊好寫。這樣子講吧,如果你只搜尋一次的話,是看不出什麼區別的,但是如果你要搜尋m次,m又很大呢?每一次都要用迴圈去乙個乙個比較嗎?o n m 的時間複雜度是不是會讓你體驗極差 這個題目在經過自己...