增减序列

2023-11-08

增减序列

https://www.acwing.com/problem/content/102/
给定一个长度为 n 的数列 a1,a2,…,an,每次可以选择一个区间 [l,r][l,r],使下标在这个区间内的数都加一或者都减一。

求至少需要多少次操作才能使数列中的所有数都一样,并求出在保证最少次数的前提下,最终得到的数列可能有多少种。

输入格式

第一行输入正整数 n。

接下来 n行,每行输入一个整数,第 i+1行的整数代表 ai。

输出格式

第一行输出最少操作次数。

第二行输出最终能得到多少种结果。

数据范围

0<n≤10^5<n≤105,
0≤ai<21474836480.

输入样例:

4
1
1
2
2

输出样例:

1
2

解析:一看题,就觉得题目很难,还要求出数列可能有多少种?开什么玩笑,看到这已经开始流汗了。但是如果你已经提前知道了要用差分数组做,这道题就变得非常简单了。

当数列中的所有数都一样时,差分数组中的数字都是0!(除了第1个和n+1个)

就是因为差分数组这种特殊的结构,使得它可以解决这样的问题,很神奇不是吗。

下面取自算法竞赛进阶指南:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码:

int a[N];
int b[N];
signed main()
{
    int n;
    cin>>n;
    int pos=0;
    int neg=0;
    for(int i=1;i<=n;++i)
    {
        cin>>a[i];
        b[i]=a[i]-a[i-1];
        if(i!=1&&b[i]>0)pos+=b[i];
        else if(i!=1&&b[i]<0)neg+=-b[i];
    }
    int times=1+abs(pos-neg);
    int ans=max(pos,neg);
    cout<<ans<<endl<<times<<endl;
    Please AC;
}

总结:区间修改可用差分数组,差分数组可以判断数列中的所有数是否都一样,并O(2)修改。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

增减序列 的相关文章

  • 使用 Unity 在构造函数中使用属性依赖注入

    好的 我在基类中定义了一个依赖属性 我尝试在其派生类的构造函数内部使用它 但这不起作用 该属性显示为 null Unity 在使用 container Resolve 解析实例后解析依赖属性 我的另一种选择是将 IUnityContaine
  • VB.NET 相当于 C# 属性简写吗?

    是否有与 C 等效的 VB NET public string FirstName get set 我知道你能做到 Public Property name As String Get Return name ToString End Ge
  • 将内置类型转换为向量

    我的 TcpClient 类接受vector
  • XamlReader.Load 在后台线程中。是否可以?

    WPF 应用程序具有从单独的文件加载用户控件的操作 使用XamlReader Load method StreamReader mysr new StreamReader pathToFile DependencyObject rootOb
  • 单元测试一起运行时失败,单独运行时通过

    所以我的单元测试遇到了一些问题 我不能只是将它们复制并粘贴到这里 但我会尽力而为 问题似乎是 如果我一项一项地运行测试 一切都会按预期进行 但如果我告诉它一起运行测试 则 1 5 将通过 TestMethod public void Obj
  • 存储来自其他程序的事件

    我想将其他应用程序的事件存储在我自己的应用程序中 事件示例 打开 最小化 Word 或打开文件时 这样的事可能吗 运行程序 http msdn microsoft com en us library ms813609 aspx and 打开
  • 在 C# 中循环遍历文件文件夹的最简单方法是什么?

    我尝试编写一个程序 使用包含相关文件路径的配置文件来导航本地文件系统 我的问题是 在 C 中执行文件 I O 这将是从桌面应用程序到服务器并返回 和文件系统导航时使用的最佳实践是什么 我知道如何谷歌 并且找到了几种解决方案 但我想知道各种功
  • 用于检查项目文件中的项目变量和引用路径的 api

    我正在研究一个 net application VS2010 与 x 没有 解和变量号这些解决方案中的项目数量 我需要检查项目属性 特定于一定数量的项目 是否同质 并且检查 验证构建期间的参考路径 有没有一个API是这样的吗 如果没有 我该
  • 如何在 C# 中定义文本框数组?

    您好 当我在 Windows 申请表上创建文本框时 我无法将其命名为 box 0 box 1 等 我这样做的目的是因为我想循环使用它们 其实我发现TextBox array firstTextBox secondTextBox 也有效
  • 未定义的行为或误报

    我 基本上 在野外遇到过以下情况 x x 5 显然 它可以在早期版本的 gcc 下编译干净 在 gcc 4 5 1 下生成警告 据我所知 警告是由 Wsequence point 生成的 所以我的问题是 这是否违反了标准中关于在序列点之间操
  • PlaySound 可在 Visual Studio 中运行,但不能在独立 exe 中运行

    我正在尝试使用 Visual Studio 在 C 中播放 wav 文件 我将文件 my wav 放入项目目录中并使用代码 PlaySound TEXT my wav NULL SND FILENAME SND SYNC 我按下播放按钮 或
  • C++:.bmp 到文件中的字节数组

    是的 我已经解决了与此相关的其他问题 但我发现它们没有太大帮助 他们提供了一些帮助 但我仍然有点困惑 所以这是我需要做的 我们有一个 132x65 的屏幕 我有一个 132x65 的 bmp 我想遍历 bmp 并将其分成小的 1x8 列以获
  • 如何使用 watin 中的 FileUploadDialogHandler 访问文件上传对话框

    我正在使用 IE8 和 watin 并尝试通过我的网页测试上传文件 我不能简单地使用 set 方法设置上传文件 例如 ie FileUpload Find ById someId Set C Desktop image jpg 因为上传文本
  • 如何将自定义 JSON 文件添加到 IConfiguration 中?

    我正在使用 asp net Autofac 我正在尝试加载自定义 JSON 配置文件 并基于该文件创建 实例化 IConfiguration 实例 或者至少将我的文件包含到默认情况下构建的 IConfiguration asp net 中
  • 使用 Moq 使用内部构造函数模拟类型

    我正在尝试模拟 Microsoft Sync Framework 中的一个类 它只有一个内部构造函数 当我尝试以下操作时 var fullEnumerationContextMock new Mock
  • 将 log4net 与 Autofac 结合使用

    我正在尝试将 log4net 与 Autofac 一起使用 我粘贴了这段代码http autofac readthedocs org en latest examples log4net html http autofac readthed
  • Process.Start() 方法在什么情况下返回 false?

    From MSDN https msdn microsoft com en us library e8zac0ca v vs 110 aspx 返回值 true 表示有新的进程资源 开始了 如果由 FileName 成员指定的进程资源 St
  • memset 未填充数组

    u32 iterations 5 u32 ecx u32 malloc sizeof u32 iterations memset ecx 0xBAADF00D sizeof u32 iterations printf 8X n ecx 0
  • 检查Windows控制台中是否按下了键[重复]

    这个问题在这里已经有答案了 可能的重复 C 控制台键盘事件 https stackoverflow com questions 2067893 c console keyboard events 我希望 Windows 控制台程序在按下某个
  • 防止在工厂方法之外实例化对象

    假设我有一个带有工厂方法的类 class A public static A newA Some code logging return new A 是否可以使用 a 来阻止此类对象的实例化new 那么工厂方法是创建对象实例的唯一方法吗 当

随机推荐

  • 超详细解释MyBatis与Spring的集成原理

    前言 最原始的MyBatis的使用 通常有如下几个步骤 读取配置文件mybatis config xml构建SqlSessionFactory 通过SqlSessionFactory拿到SqlSession 通过SqlSession拿到Ma
  • SpringCloud

    文章目录 微服务架构 SpringCloud 二 上篇SpringCloud本Cloud 1 SpringCloud的命名规则及版本关系 1 1 springboot与springcloud的版本依赖 1 2 本次博文使用的环境及版本 2
  • 浅谈NB-IOT模块调试

    背景 在物联网的口号下 我们公司也有幸踏足NB物联这块 当然也只是二次应用开发 NB核心开发技术都掌握在几个大公司大佬手里 例如 华为海思 高通 intel 当然模块 厂商又例如 移远 ublox等 芯片的资料和技术不像Lora这样开源 所
  • python实现字符串匹配算法BF,BF改,KMP

    包含 BF BF改进版本 KMP BF 暴力搜索 BF改 当判断匹配失败的字符串是不是与首字母相同 若不同 继续BF算法 若相同 直接将首字母移到当前位置 KMP 通过前缀与后缀发现待匹配字符串本身的特性 匹配失败时一次性移动多个字符以减少
  • python三维数组切片

    使用np random randint创建一个 3 4 5 的三维随机数组 利用切片返回 如下图位置的数
  • 文件上传封装与使用

    组件封装
  • Linux下Fork与Exec使用

    老邮局 琼楼挂月钓流云 梦里瑶台暂借春 Linux下Fork与Exec使用 一 引言 对于没有接触过Unix Linux操作系统的人来说 fork是最难理解的概念之一 它执行一次却返回两个值 fork函数是Unix系统最杰出的成就之一 它是
  • 白帽,黑帽,灰帽,绿帽!一文了解黑客的所有信息

    前言 您是否想过黑客有许多不同的类型 是什么因素促使他们学习黑客技能 当我想到黑客时 我都会想到下面这张图片 那就是黑客的形象 那你呢 文末有彩蛋 网络可以说是有史以来最重要的战场 这里没有国界 也没有有组织的军队 在线网络战场是善恶之间最
  • ucosII 下iic 的使用问题(含解决方式)

    今天在将SGP30气体传感器的代码移植到ucosii中使用时遇到了输出数据一直为65535的情况 分析现象 开始以为是硬件问题 元器件损坏等原因 使用了裸核代码进行测试 能够正常读取相应参数说明硬件正常 ucos跑死了 增加led显示任务
  • 机器学习笔试题一

    1 输入图片大小为200 200 依次经过一层卷积 kernel size 5 5 padding 1 stride 2 pooling kernel size 3 3 padding 0 stride 1 又一层卷积 kernel siz
  • @Autowired三种注入方式的区别以及@Inject注解的基本使用

    文章目录 Autowired三种注入方式的区别 Autowired三种注入方式 1 构造器注入 lombok注解实现构造器注入 2 setter注入 3 属性注入 问题一 问题二 总结 使用 Inject 代替 Autowired 参考 A
  • 彻底搞清楚javascript中的require、import和export

    为什么有模块概念 理想情况下 开发者只需要实现核心的业务逻辑 其他都可以加载别人已经写好的模块 但是 Javascript不是一种模块化编程语言 在es6以前 它是不支持 类 class 所以也就没有 模块 module 了 require
  • 【大模型】在linux上使用nvidia显卡,使用llam.cpp框架运行Baichuan-7B 模型,可以成功运在CPU和GPU下运行,int4量化版本速度飞快。

    1 先下载模型Baichuan 7B 找到个网站可以快速的下载模型 https aliendao cn models baichuan inc Baichuan 7B pytorch model bin 13 0 GB Baichuan 7
  • 常用jquery 方法

    注意点 使用jquer时时刻注意此时是jquery 对象 而非dom对象 在调用相关方法 属性时 注意不用与dom对象混用 导致调用失败 一 IFRAME相关调用知识 摘自 http java my life iteye com blog
  • python学习-GUI

    图形用户界面和游戏开发 一 基于tkinter模块的GUI 在python中的默认GUI开发模块是tkinter 还有其他的模块wxPython PyQt PyGTK等 基于tkinter开发的GUI应用以下5个步骤 导入tkinter模块
  • "undefined reference to" 问题解决方法

    最近在 Linux 下编程发现一个诡异的现象 就是在链接一个静态库的时候总是报错 类似下面这样的错误 text 0x13 undefined reference to func 关于undefined reference 这样的问题 大家其
  • nmap常用命令

    nmap 命令 1 nmap sT 192 168 96 4 TCP连接扫描 不安全 慢 2 nmap sS 192 168 96 4 SYN扫描 使用最频繁 安全 快 3 nmap Pn 192 168 96 4 目标机禁用ping 绕过
  • Unity中触摸和鼠标操作的几个问题

    关键点1 在unity中touch事件同时也会触发GetMouseButton事件 有时候可能会给你带来方便 但是如果没有意识到这个问题的话 也很可能给你带来很大的麻烦 关键点2 触摸操作也可以使用Input GetAxis Mouse X
  • 自动调用拷贝构造函数的三种情况

    自动调用拷贝构造函数的三种情况 首先介绍拷贝构造函数的定义形式 class 类名 public 构造函数名称 类名 变量名 函数体 拷贝构造函数是使用类对象的引用作为参数的构造函数 它能够将参数的属性值拷贝给新的对象 完成对新对象的初始化
  • 增减序列

    增减序列 https www acwing com problem content 102 给定一个长度为 n 的数列 a1 a2 an 每次可以选择一个区间 l r l r 使下标在这个区间内的数都加一或者都减一 求至少需要多少次操作才能