网站建设寻求,自己搭建云服务平台,如何在凡科建设网站,o2o是什么正题
题目链接:https://www.luogu.com.cn/problem/P4552 题目大意
给出nnn个数#xff0c;每次可以选择一个区间加一或减一#xff0c;求最少操作使得所有数相等#xff0c;并且求可能的最终序列个数。 解题思路
在差分数组上操作#xff0c;那么操作变为将差分数组上一…正题
题目链接:https://www.luogu.com.cn/problem/P4552 题目大意
给出nnn个数每次可以选择一个区间加一或减一求最少操作使得所有数相等并且求可能的最终序列个数。 解题思路
在差分数组上操作那么操作变为将差分数组上一个数111且一个数−1-1−1当然当l1l1l1或rnrnrn时就是只改变一个数。所以最少操作数就是正数的和和负数的绝对值和的最大值。
序列种数假设正数和zzz大于负数和fff那么其实对于f∼zf\sim zf∼z这个范围内的我们都可以选择是让l1l1l1来修改或者rnrnrn来修改所以个数和就是abs(f−z)1abs(f-z)1abs(f−z)1 codecodecode
#includecstdio
#includecstring
#includealgorithm
#define ll long long
using namespace std;
ll n,a[1100000],z,f;
int main()
{scanf(%lld,n);for(ll i1;in;i){scanf(%lld,a[i]);ll xa[i]-a[i-1];if(i1)continue;z(x0)*x;f-(x0)*x;}printf(%lld\n%lld,max(z,f),abs(z-f)1);
}