Mountains CVTE面試題 解題報告

2022-07-31 06:21:17 字數 1448 閱讀 2003

題目大意:

用乙個陣列代表群山的高度。高度大的地方代表山峰,小的地方代表山谷。山谷可以容水。假設有一天下了大雨,求群山中總共可以容納多少水?

如圖所示情況,a代表該陣列,總共可以容納5個水。

解題思路:

初步想法可以列舉每乙個單位,判斷是否能放水。這種做法的複雜度為o(n^2*h)其中h為陣列最大值,n為陣列的大小。效率較低。

進一步觀察發現:由於只有山谷可以存水,假設a[i],a[j]>a[k](i**:

#include #include 

#define maxn 1000

using

namespace

std;

inthills[maxn];

inthighest[maxn][maxn];

inthighone[maxn][maxn];

intstones[maxn][maxn];

int total = 0

;int

n;int calwater(int f, int

t) void solve(int f, int

t) total +=calwater(n1, n2);

solve(f, n1);

solve(n2, t);

}int

main()

for (i = 0; i < n; i++)

int step = 2

;

intf,t,m;

while (step <=n)

step++;

}solve(

0, n-1

); cout

<< total <

}

心得體會:

下面一行為吐槽請繞過。

這道題雖然簡單但是用了分治的思想。沒有想到更好的解法,希望有大神指點迷津!

更好的解法!(感謝@mchcylh)

**:

#include #include 

#define maxn 1000

using

namespace

std;

int a[1000

];int

main()

int l, hl, r, hr, tot = 0

; l = hl = 0

; r = hr = n-1

;

while (r-l>1

)

if (i !=n)

} else

if (i != -1

) }

}cout

<< tot <

}

複雜度降為o(n)www

面試 面試 面試

大規模的面試開始了。第三次和第四次的面試,讓我不得不轉變方向。上週去的北大方正,不知道是他們危言聳聽,還是確實情況不容樂觀。方正的待遇是 實習每天40 不是我計較薪水,也忒黑了點 估計是想找馬上能進入公司的人,想培養一下?還是。首先,我沒有時間按全職的時間實習,學校的事情還有很多,自己的課題 還有,...

面試 面試 面試

大規模的面試開始了。第三次和第四次的面試,讓我不得不轉變方向。上週去的北大方正,不知道是他們危言聳聽,還是確實情況不容樂觀。方正的待遇是 實習每天40 不是我計較薪水,也忒黑了點 估計是想找馬上能進入公司的人,想培養一下?還是。首先,我沒有時間按全職的時間實習,學校的事情還有很多,自己的課題 還有,...

面試 面試解答

asp.net有六大內建物件,session cookie response request cache server 1 server.transfer 對於當前請求,終止當前頁的執行,並使用指定的頁url路徑來開始執行乙個新頁 2 response.redirect 將請求重定向到新的url並指...