首页 > 其他分享 >P4552 [Poetize6] IncDec Sequence

P4552 [Poetize6] IncDec Sequence

时间:2024-02-17 20:57:53浏览次数:31  
标签:int s2 s1 所有 P4552 端点 Poetize6 IncDec 步数

先看题目,因为在文中可以发现,它有一个区间加区间减的操作,所以我们想到了线段树和差分,而下面题目是要我们自己查找让所有的数字相同的最小步数。

因此我们可以将线段树排除,那么来看差分,对于差分而言,所有的数字都相同,就可以看作对于所有的 $2\le i \le n$ 而言,$a_i = 0$,最后的结果是所有的数都与 $a_1$ 一样。

先来看第一问,最少步数。那么对于差分数组来说,每一次的区间操作可以让两个位置的值发生改变,那么能让两个改变位置都在 2~n 中自然是最快的,所以我们令 p为所有正数的绝对值之和,q为所有负数的绝对值之和 那么能让左右端点变化都在范围内的步数是 $min(p,q)$,只有一个端点的步数是 $abs(p-q)$。所有第一问的答案就是 $max(p,q)$。

第一问解决之后来看第二问,前文说过最后的数列全都是 $a_1$ 的值。所以最终的种类数就是 $a_1$ 值的种类数。因为要最少步数达到,所以每个两端点贡献的操作左右端点固定。那么所有一个端点的操作数就是所有可以改变 $a_1$ 值的操作数,所以数量为一步操作数加一(因为原来也有个值)。

#include <cstdio>
#include <algorithm>
using namespace std;
const int N = 100000 + 5;
int a[N];
int n;
long long s1, s2;
int main() {
    scanf ("%d", &n);
    for (int i = 1;i <= n; ++ i)
        scanf ("%d", a + i);
    for (int i = n;i > 1; -- i)
        a[i] -= a[i - 1];
    for (int i = 2;i <= n; ++ i) {
        if (a[i] > 0) s1 += a[i];
        else s2 -= a[i];
    }
    printf ("%lld\n", max (s1, s2));
    printf ("%lld\n", abs (s1 - s2) + 1);
    return 0;
}

完结撒花

标签:int,s2,s1,所有,P4552,端点,Poetize6,IncDec,步数
From: https://www.cnblogs.com/Assassins-Creed/p/18018376

相关文章

  • Luogu P4552 [Poetize6] IncDec Sequence 更好的题解
    原题链接第一步对于学过差分的人应该不难想定义差分数组$dis\quads.t.\quaddis[i]=a[i]-a[i-1]$那么不难发现问题一只要让\(dis[2]...dis[n]\)中全部为\(0\)即可区间\([l,r]\)加一操作在差分数组中意味着\(dis[l]=dis[l]+1,dis[r+1]=dis[r+1]-1\)即在差分数组......
  • [Poetize6] IncDec Sequence(差分)
    题意:给出一数组,已知一次操作可以让一个区间内的数加一或减一,求使得数组内所有元素一致的最少操作数和方案数解题思路:1.区间的加减可以用差分来完成,那么使数组内元素一致即可以看成令差分数组内所有元素为零2.因为一次区间操作可以让差分数组内一个元素+1,一个元素-1或是......
  • P4552 [Poetize6] IncDec Sequence
    P4552[Poetize6]IncDecSequence[Poetize6]IncDecSequence题目描述给定一个长度为n的数列a_1,a_2,...,a_n,每次可以选择一个区间[l,r],使这个区间内的数都加1或......
  • 洛谷 P4552 [Poetize6] IncDec Sequence(差分)
    题目分析直接贴一个洛谷上的题解,真的秀,讲的又清楚又好要使得序列的数全部相等,其实就是让他们之间的差全为0,也就是差分序列的除了第一项每一项都是0,为什么除了第一项呢,因......
  • AcWing 100. IncDec序列
    题目链接:​​传送门​​将序列转化成差分数列那么题目就变成了对一个数组可进行三种操作对两个元素一个加一一个减一或对一个元素加一或对一个元素减一其实后面两种操作......