const int maxn = 51000;
int h[maxn], n;
int fun(int l, int r, int sub)
{
if (l > r) return 0;
int Min = INF, id;
FE(i, l, r)
if (h[i] < Min)
{
Min = h[i];
id = i;
}
return min(r - l + 1, fun(l, id - 1, Min) + fun(id + 1, r, Min) + Min - sub);
}
int main()
{
while (~RI(n))
{
FE(i, 1, n)
RI(h[i]);
cout << fun(1, n, 0) << endl;
}
return 0;
}Codeforces Round #256 (Div. 2)——Painting Fence,布布扣,bubuko.com
Codeforces Round #256 (Div. 2)——Painting Fence
原文:http://blog.csdn.net/wty__/article/details/37923547