题解:P5019 [NOIP2018 提高组] 铺设道路
首先进行观察,发现第 \(i\) 块区域分为两种情况:
- \(a_i \le a_{i-1}\),此时 \(a_{i-1}\) 操作时可以带上它,无需额外操作,答案不变。
- \(a_i > a_{i-1}\),此时前面带完后还需降低,答案补上差值 \(a_i - a_{i-1}\)。
枚举 \(i\) 判断即可。
给出参考代码:
#include<bits/stdc++.h>
using namespace std;
int n, a[100005], ans;
int main(){
cin >> n;
for(int i = 1; i <= n; i ++) cin >> a[i];
for(int i = 1; i <= n; i ++){
if(a[i] > a[i - 1]) ans += a[i] - a[i - 1];
}
cout << ans;
return 0;
}
posted on 2025-01-11 14:19 zhangzirui66 阅读(101) 评论(0) 收藏 举报