codeforces 448C 分治

来源:互联网 发布:淘宝详情页html代码 编辑:程序博客网 时间:2024/06/10 21:26
#include<iostream>#include<algorithm>#define INF 0x3f3f3fusing namespace std;const int maxn = 5005;int h[maxn];int solve(int l, int r){int Min = INF;int sum, flag = l;for (int i = l; i <=r; i++) {Min = min(Min, h[i]);}for (int i = l; i <=r; i++)h[i] -= Min;sum = Min;for (int i = l; i <=r; i++) {if (h[i] == 0) {if (flag == i) {flag++;continue;}sum += solve(flag, i - 1);flag = i + 1;}}if (h[r] != 0)sum += solve(flag, r);sum = min(sum, r - l + 1);return sum;}int main(){int n;cin >> n;for (int i = 1; i <=n; i++)cin >> h[i];int ans = solve(1, n);cout << ans<< endl;return 0;}

原创粉丝点击