题解:P1969 [NOIP2013 提高组] 积木大赛

· · 题解

题目传送门

思路

题目要求是要找到一种方法来最小化搭建大厦所需的最少操作次数。

观察题目,我们可以发现,如果当前积木的高度大于前一块积木的高度,则需要额外的操作来增加积木的高度。

我们可以遍历每个积木,计算当前积木与前一块积木的高度差,这个差值就是需要的操作次数。这样我们就能得到总的最少操作次数。

代码

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

AC记录