1 条题解

  • 1
    @ 2024-12-18 20:57:31

    luogu-P1969题解

    有部分思路来源于洛谷\color{#0E90D2}\text{洛谷}题解。

    主要题意

    有一排初始都为 00 ,长度为 nn 的数组,你可以每次选择一个区间 LL ~ RR ,将这部分全部增加 11 。希望最后在 nn 个数中,ai=hia_i = h_i

    解题思路

    如果 hi<hi+1h_i<h_{i+1} ,那么说明左边比右边要少,不能加到最大。于是,答案加上 hi+1hih_{i+1}-h_i

    如果hihi+1h_i\ge h_{i+1} ,那么满足左边时一定满足了右边,所以答案不变。

    上代码!

    #include <bits/stdc++.h>
    using namespace std;
    int n,a[100001],x=0,ans=0;
    int main(void)
    { 
        cin>>n;
        for(int i=1;i<=n;i++)
        {
            cin>>a[i];
            if(a[i]>x)
    			ans+=(a[i]-x);
            x=a[i];
        }
        cout<<ans;
        return 0;
    }
    
    
    • 1

    信息

    ID
    6022
    时间
    1000ms
    内存
    125MiB
    难度
    3
    标签
    递交数
    11
    已通过
    8
    上传者