当前位置: 首页 > news >正文

[Poetize6] IncDec Sequence

题目描述

给定一个长度为 n 的数列 a_1,a_2,...,a_n,每次可以选择一个区间[l,r],使这个区间内的数都加 1 或者都减 1。 
  
请问至少需要多少次操作才能使数列中的所有数都一样,并求出在保证最少次数的前提下,最终得到的数列有多少种。

输入格式

第一行一个正整数 n   
接下来 n 行,每行一个整数,第 i+1 行的整数表示 a_i。

输出格式

第一行输出最少操作次数   
第二行输出最终能得到多少种结果

样例 #1

样例输入 #1
4
1
1
2
2

样例输出 #1
1
2

提示

对于 100% 的数据,n<= 100000, 0 <= a_i <= 2^31。

代码:

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
typedef long long LL;  // 定义 long long 类型的别名为 LL
LL n, c, p, q, a[100010];  // 声明变量int main()
{cin >> n;  // 输入数组的长度 nfor (int i = 1; i <= n; i++){scanf("%lld", &a[i]);  // 输入数组的元素}for (int i = 2; i <= n; i++)  // 从第二个元素开始遍历数组{c = a[i] - a[i - 1];  // 计算相邻元素之间的差值if (c > 0)  // 如果差值大于 0,说明需要增加操作{p += c;  // 累加增加操作次数}else  // 否则,需要减少操作{q -= c;  // 取反后累加减少操作次数}}LL ans1 = max(p, q);  // 找到增加和减少操作次数中的较大值,作为最少操作次数LL ans2 = abs(p - q) + 1;  // 计算操作次数之差的绝对值加 1,作为最终可能的结果种数cout << ans1 << endl << ans2;  // 输出最少操作次数和结果种数return 0;  // 程序结束
}

http://www.lryc.cn/news/124448.html

相关文章:

  • 通过Microsoft Loopback Adapter实现虚拟机和物理机的通信
  • 算法leetcode|70. 爬楼梯(rust重拳出击)
  • 基于epoll的TCP服务器端(C++)
  • 实时安全分析监控加强网络安全
  • 基于ipad协议的gewe框架进行微信群组管理(二)
  • 大数据-玩转数据-Flink网页埋点PV统计
  • 什么是伪类选择器?
  • PLY模型格式详解【3D】
  • Java的反射机制、Lambda表达式和枚举
  • 数据结构:堆的实现
  • zabbix-6.4 监控 MySQL
  • 深入探索:解读创意的力量——idea的下载、初步使用
  • Redis详解
  • 【Linux】高级IO
  • 动态HTTP代理与竞争情报收集的关联
  • kafka基本概念及操作
  • 分享个试卷去笔迹什么软件,几个步骤轻松擦除
  • ClickHouse(十八):Clickhouse Integration系列表引擎
  • 日常BUG——代码提交到了本地但是没有push,删除了本地分支如何恢复
  • Markdown语法
  • vue3表格,编辑案例
  • SQL Server Reporting Services 报错:报表服务器无法访问服务帐户的私钥
  • QT报表Limereport v1.5.35编译及使用
  • 互联网发展历程:从中继器口不够到集线器的引入
  • vue+flask基于知识图谱的抑郁症问答系统
  • 操作格子---算法集
  • 科研绘图chapter1:绘图原则与配色基础
  • Linux下grep通配容易混淆的地方
  • WebRTC音视频通话-WebRTC本地视频通话使用ossrs服务搭建
  • 基于SpringBoot和Freemarker的页面静态化