CF448C

来源:互联网 发布:卧龙01灵宝进阶数据 编辑:程序博客网 时间:2024/06/03 19:16
这个题跟13年的noip day2 第一题很像,不过多了一个竖着刷,联赛的时候我曾有过这种错误的想法,不过没想到是这道题的正解。。。
#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>#include <cmath>using namespace std;int save[6000],n;int solve(int l,int r){    int ans;    int len=r-l+1;    int height=save[l];    for(int i=l;i<=r;i++)        if(save[i]<height)        height=save[i];    ans=height;    for(int i=l;i<=r;i++)        save[i]-=height;    for(int i=l;i<=r;i++)    {        if(save[i])        {            int ll=i;            int j=i;            while(save[j])                j++;            int rr=j-1;            ans+=solve(ll,rr);        }    }    return min(ans,len);}int main(){    scanf("%d",&n);    for(int i=1;i<=n;i++)    {        scanf("%d",&save[i]);    }    int ans=solve(1,n);    printf("%d",ans);    return 0;}

0 0
原创粉丝点击