前缀和与差分2:增减序列
作者:
总打瞌睡的天天啊
,
2024-08-04 14:28:52
,
所有人可见
,
阅读 1
//考虑差分序列,保证差分序列b2~bn都为零
// i:至少操作多少次
// ii:b1有多少种值
// 分类讨论l和r的范围
// 题目的要求是只能在l~r每个数都+-1,则每次在b2~bn中选数加减,按正负分开讨论
//主要还是思路难想,贪心算法
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;;
const int N=100010;
typedef long long LL;
int n;
int a[N],b[N];
int main()
{
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
for(int i=1;i<=n;i++)b[i]=a[i]-a[i-1];
LL p=0,q=0;
for(int i=2;i<=n;i++)
if(b[i]>0)p+=b[i];
else q-=b[i];
cout<<max(p,q)<<endl;
cout<<abs(p-q)+1<<endl;
return 0;
}