題目大意:
用乙個陣列代表群山的高度。高度大的地方代表山峰,小的地方代表山谷。山谷可以容水。假設有一天下了大雨,求群山中總共可以容納多少水?
如圖所示情況,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複雜度降為o(n)www#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 <
}
面試 面試 面試
大規模的面試開始了。第三次和第四次的面試,讓我不得不轉變方向。上週去的北大方正,不知道是他們危言聳聽,還是確實情況不容樂觀。方正的待遇是 實習每天40 不是我計較薪水,也忒黑了點 估計是想找馬上能進入公司的人,想培養一下?還是。首先,我沒有時間按全職的時間實習,學校的事情還有很多,自己的課題 還有,...
面試 面試 面試
大規模的面試開始了。第三次和第四次的面試,讓我不得不轉變方向。上週去的北大方正,不知道是他們危言聳聽,還是確實情況不容樂觀。方正的待遇是 實習每天40 不是我計較薪水,也忒黑了點 估計是想找馬上能進入公司的人,想培養一下?還是。首先,我沒有時間按全職的時間實習,學校的事情還有很多,自己的課題 還有,...
面試 面試解答
asp.net有六大內建物件,session cookie response request cache server 1 server.transfer 對於當前請求,終止當前頁的執行,並使用指定的頁url路徑來開始執行乙個新頁 2 response.redirect 將請求重定向到新的url並指...