P1318 70分模拟求调
  • 板块题目总版
  • 楼主19x31
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/7/28 12:53
  • 上次更新2023/11/3 07:15:03
查看原帖
P1318 70分模拟求调
644846
19x31楼主2023/7/28 12:53
#include<bits/stdc++.h>
using namespace std;
int t,n,k,a[100005],r[100005],b[100005],h[100005],ans=0;
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    b[1]=a[1];
    h[1]=0;
    for(int i=2;i<=n;i++){
        if(a[i]<b[i-1]){
            h[i]=b[i-1]-a[i];
            b[i]=b[i-1];
        }else{
            b[i]=a[i];
            h[i]=0;
        }
    }
    for(int i=n;i>=1;i--){
        if(h[i]!=0){
            h[i]=0;
        }else{
            break;
        }
    }
    for(int i=1;i<=n;i++){
        ans+=h[i];
    }
    cout<<ans;
    return 0;
}

思路就是发现自己的左边比自己高,就存下来左边的高度,然后让后面的和存下来的高度比较。最后把右边的那些删除掉。

2023/7/28 12:53
加载中...