这道题是一道差分的题目

差分数组p即p[i]=a[i]-a[i-1]

如果我们把一个区间[l,r]里的数+1,那么我们不难发现p[l]'=a[l]+1-a[l-1]=p[l]+1,p[r+1]'=a[r+1]-(a[r]+1)=p[r+1]-1

即一次将两个p[i]+1 or -1

还有一种情况可以使p[l]+1 or -1

---------------差分数组介绍完毕-------------------------

首先我们看第一小问:输出最少操作次数使所有数相等,即令p[i]==0(i!=1)

我们可以根据之前得到的结论推广:

若 p[2]==1,p[3]==-2,那么我们最少需要两次操作;

若 p[2]==1,p[3]==-2,p[4]==4,那么我们最少需要五次操作;

若 p[2]==1,p[3]==-2,p[4]==4,p[5]==-2,那么我们最少需要五次操作;

......

不难看出,若把原p数组中正数之和表示为a,负数绝对值之和表示为b,那么我们最少需要max(a,b)次操作。

再看第二小题。

题目可以理解为:在一问的条件下,p[1]的值有多少种情况?

无需赘述,我们可以发现,当我们min(a,b)次操作后,数组p中定然只会剩下p[1]与一些同号的数。对于之后的|a-b|次操作,我们可以选择让p[1]变动或不变,这样一来p[1]的值就会有1+max(a,b)种可能的值。

完结撒花qwq~

代码:

#include<bits/stdc++.h>
using namespace std;
long long n,a[101000],p[101000],z,f,ans;
int main()
{cin>>n;for(int i=1;i<=n;i++){scanf("%lld",&a[i]);p[i]=a[i]-a[i-1];}for(int i=2;i<=n;i++){if(p[i]>0)z+=p[i];elsef-=p[i];}long long ans=abs(z-f),an=max(z,f);cout<<an<<"\n"<<1+ans;return 0;
}

转载于:https://www.cnblogs.com/lost-in-tianyi/p/10712149.html

题解 guP4552 IncDec Sequence相关推荐

  1. BZOJ 3043 IncDec Sequence:反向差分

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3043 题意: 给定一个长度为n的数列a[i],每次可以选择一个区间[l,r],使这个区间内 ...

  2. IncDec Sequence(codevs 2098)

    题目描述 Description 给定一个长度为n的数列{a1,a2...an},每次可以选择一个区间[l,r],使这个区间内的数都加一或者都减一. 问至少需要多少次操作才能使数列中的所有数都一样,并 ...

  3. [Poetize6] IncDec Sequence

    Description 有一个长度为\(n(n\leq 100000)\)的数列,每次可以给一个区间\([l,r]\)加1或者减1.问要多少次操作让整个数列一样,并求出最少操作的前提下,最终得到的数列 ...

  4. CH - 0304 IncDec Sequence(差分+思维)

    题目链接:点击查看 题目大意:给定一个长度为 n(n≤10^5 ) 的数列 {a_1,a_2,-,a_n},每次可以选择一个区间 [l,r],使下标在这个区间内的数都加一或者都减一.求至少需要多少次操 ...

  5. 题解-BOI 2004 Sequence

    Problem bzoj & Luogu 题目大意: 给定序列\(\{a_i\}\),求一个严格递增序列\(\{b_i\}\),使得\(\sum \bigl |a_i-b_i\bigr|\)最 ...

  6. P4552-[Poetize6]IncDec Sequence【差分】

    正题 题目链接:https://www.luogu.com.cn/problem/P4552 题目大意 给出nnn个数,每次可以选择一个区间加一或减一,求最少操作使得所有数相等,并且求可能的最终序列个 ...

  7. 解题报告 『[Poetize6]IncDec Sequence(差分)』

    原题地址 差分,想到了这个再看看代码应该就很好做了. 代码实现如下: #include <bits/stdc++.h> using namespace std; #define int l ...

  8. 蓝桥备赛第二周 前缀和

    文章目录 前缀和与差分数组 [HNOI2003]激光炸弹 前缀和解法(他又不变,,,前缀和就能搞定吧?) 这种地方出现的错误(部分数据过不去)可能是少个等于之类的边界问题 2021-3-10复习,这里 ...

  9. 前缀和+差分+ 树状数组

    前缀和+差分的理论知识 前缀和相关题: 「USACO16JAN」子共七 Subsequences Summing to Sevens 定理:若两个数相减 mod k == 0,那么这两个数mod k ...

最新文章

  1. iptables-save和iptables-restore
  2. 基于Picture Library创建的图片文档库中的上传多个文件功能(upload multiple files)报错怎么解决?...
  3. iOS中UITextField 使用全面解析
  4. 解决Adobe Reader安装错误150120
  5. python 使用raise语句主动抛出异常(Exception)、将异常抛出给上一级
  6. Teams与OneDrive for Business和SharePoint的关系
  7. eclipse中查看mysql_eclipse中怎样查看sqlite数据库的表
  8. python设置默认密码_使用Python生成随机密码的示例分享
  9. 人情味,让你的内容脱颖而出
  10. 遍历Map集合的四种方式
  11. Linux安装Anaconda报错,无法执行二进制文件,可执行文件格式错误
  12. 如何使用两台无线路由器进行无线桥接(互联)(转)
  13. 如何使用百数低代码开发平台制作问卷调查表?
  14. 【WiFi】Wi-Fi 5(802.11ac) 与 Wifi 6 (802.11ax)RF的关键变化
  15. 2021-08-07 解决安装MacTeX后界面显示法语问题
  16. 找金币问题/只秤一次找出真假金币在哪个箱子
  17. 如何获取(GET)一杯咖啡——星巴克REST案例分析
  18. 14z app测试方法与技术 -软件测试
  19. 【北亚服务器数据恢复】Infortrend ESDS系列服务器raid6数据恢复
  20. 如何用Spark进行数据分析

热门文章

  1. Firefox火狐浏览器安装selenium IDE插件实现自动化脚本录制教程
  2. 人工智能(4):模型评估
  3. 良心推荐 一个可以下载各种编程软件(含安装教程)微信公众号!
  4. 睿爸信奥-【临阵磨枪】练习赛(第一场)- T3
  5. mastercam9.1安装
  6. dir what matlab,3_matlab讲义_pps_大学课件预览_高等教育资讯网
  7. 根据掩码计算主机数量,确定有效主机地址。
  8. centos 6.5 无线网卡配置(hp mini)
  9. 做了十年程序员的苏明哲被裁掉的真正原因!
  10. Data Analyst-junior