AT4284 [ABC116C] Grand Garden & 洛谷 P1969 P3078 P5019 题解
题意:若干次区间减一,使所有数相等,求最小次数
这几道题就是一个std编出来的吧 $😅$
对于相邻两数 $a_i>a_{i-1}$ ,显然在一次操作中将它们同时减去是最优的
对答案的贡献为 $a_i-a_{i-1}$
推广一下其实是等价的,故时间复杂度 $O(n)$ 即可解决
代码如下
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define MAXN (int)(1e5+5)
int n;
int a[MAXN],ans;
signed main()
{
ios::sync_with_stdio(0);
cin >> n;
for(int i=1; i<=n; i++)
{
cin >> a[i];
if(a[i]>a[i-1])ans+=a[i]-a[i-1];
}
cout << ans << endl;
return 0;
}