1 条题解

  • 1
    @ 2024-10-7 14:08:11
    #include<bits/stdc++.h>
    using namespace std;
    const int maxn=1e5+5;
    int n,d[maxn],ans;
    void solve(int lo,int hi){
    	int minv=100010,pos=-1;
    	if(hi-lo<=1){
    	ans+=max(d[lo],d[hi]);
    	return;	
    	}
    	for(int i=lo;i<=hi;i++){
    		if(minv>d[i]){
    			minv=d[i];
    			pos=i;
    		}
    	}
    	ans+=minv;
    	for(int i=lo;i<=hi;i++){
    		d[i]-=minv;
    	}
    	solve(lo,pos-1);
    	solve(pos+1,hi);
    }
    int main(){
    	cin>>n;
    	for(int i=1;i<=n;i++) cin>>d[i];
    	solve(1,n);
    	cout<<ans;
    	return 0;
    }

    信息

    ID
    1968
    时间
    1000ms
    内存
    256MiB
    难度
    8
    标签
    递交数
    14
    已通过
    8
    上传者