数论:修改数列

 5462. 修改数列 - AcWing题库

给定一个长度为 n 的正整数数列 a1,a2,…,an。

你可以对其中任意个(可以是 0 个)元素进行修改。

但是,每个元素最多只能修改一次,每次修改:要么令其加 11,要么令其减 11。

请问,至少需要修改多少个元素,才能使得数列 a 变成一个等差数列。

输入格式

第一行包含整数 n�。

第二行包含 n� 个整数 a1,a2,…,an。

输出格式

一个整数,表示需要修改的元素的最少数量。

如果无解,则输出 -1

数据范围

前 44 个测试点满足 1≤n≤5。
所有测试点满足 1≤n≤105,1≤ai≤109。

输入样例1:
4
24 21 14 10
输出样例1:
3
输入样例2:
2
500 500
输出样例2:
0
输入样例3:
3
14 5 1
输出样例3:
-1
输入样例4:
5
1 3 6 9 12
输出样例4:
1

 等差数列,知道公差和数列前两项,就可以得出整个等差数列,且题目要求每个位置只能改变一次,所以可以枚举数列前两项,原数组前两项分别+1,-1和不变,共9总情况,每种情况生成一个等差数列,然后数列各个位置数跟原数组比较,差值是否大于小于等于1,否则当前情况不合法,如果每个数都合法,则当前情况合法并记录,如果有多个情况则取最小值。

AC code:

#include<bits/stdc++.h>
using namespace std;
int n;
int arr[100010];
int f = 0;
int res = 2e9;
int find(int a, int b) {int s[100010];int ans = 0;s[1] = a, s[2] = b;int x = s[2] - s[1];for (int i = 3; i <= n; i++) {s[i] = s[i - 1] + x;}for (int i = 1; i <= n; i++) {int z = abs(s[i] - arr[i]);if (z > 1) return -1;if (z == 1) ans++;}return ans + 1;
}
int main() {cin >> n;for (int i = 1; i <= n; i++) cin >> arr[i];if (n <= 2) {cout << 0;return 0;}if (!f) {int ans = -1;ans = find( arr[1] + 1, arr[2] - 1);if (ans != -1) {res = min(res, ans - 1);}}if (!f) {int ans = -1;ans = find( arr[1] - 1, arr[2] + 1);if (ans != -1) {res = min(res, ans - 1);}}if (!f) {int ans = -1;ans = find( arr[1] + 1, arr[2] + 1);if (ans != -1) {res = min(res, ans - 1);}}if (!f) {int ans = -1;ans = find(arr[1] - 1, arr[2] - 1);if (ans != -1) {res = min(res, ans - 1);}}if (!f) {int ans = -1;ans = find( arr[1], arr[2] );if (ans != -1) {res = min(res, ans - 1);}}if (!f) {int ans = -1;ans = find( arr[1] + 1, arr[2] );if (ans != -1) {res = min(res, ans - 1);}}if (!f) {int ans = -1;ans = find( arr[1] - 1, arr[2] );if (ans != -1) {res = min(res, ans - 1);}}if (!f) {int ans = -1;ans = find( arr[1], arr[2] - 1);if (ans != -1) {res = min(res, ans - 1);}}if (!f) {int ans = -1;ans = find( arr[1], arr[2] + 1);if (ans != -1) {res = min(res, ans - 1);};}if (res==2e9) cout << -1;else cout << res;
}

 可以两层循环优化减少代码长度,-1到1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/671068.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【01】判断素数/质数(C语言)

目录 &#xff08;1&#xff09;素数特点&#xff1a;只能被1和本身整除 &#xff08;2&#xff09;代码如下&#xff1a; &#xff08;3&#xff09;运行结果如下 ​编辑 &#xff08;4&#xff09;函数引申 &#xff08;1&#xff09;素数特点&#xff1a;只能被1和本身…

数字图像处理(实践篇)四十三 OpenCV-Python 使用SURF算法检测图像上的特征点的实践

目录 一 SURF算法概述 1 积分图 2 SURF算法 3 SIFT与SURF 二 涉及的函数 三 实践 一 SURF算法概述

在容器中使用buildah构建镜像

简介 buildah是一个构建OCI标准镜像的工具&#xff0c;可以用来替代docker build 在常见的linux发行版中可直接通过包管理工具安装使用 # centos yum install buildah# ubuntu/debian apt install buildah# alpine apk add buildah其他发行版安装方法详见 github&#xff0c…

Django通过Json配置文件分配多个定时任务

def load_config():with open("rule.json", rb)as f:config json.load(f)return configdef job(task_name, config, time_interval):# ... 通过task_name判断进行操作if task_name get_data_times:passdef main():config load_config()for task_name, task_value…

C++——stack与queue与容器适配器

1.stack和queue的使用 1.1stack的使用 栈这种数据结构我们应该挺熟了&#xff0c;先入后出&#xff0c;只有一个出口(出口靠栈顶近)嘛 stack的底层容器可以是任何标准的容器类模板或者一些其他特定的容器类&#xff0c;这些容器类应该支持以操作&#xff1a; empty&#xff1…

专业知识库:中小型企业必备的高效工具

在如今这个信息爆炸的时代&#xff0c;知识管理已经成为了企业运营的重要环节。特别是对于中小型企业来说&#xff0c;如何有效地管理公司内部的知识&#xff0c;提高工作效率&#xff0c;已经成为了一个亟待解决的问题。在这篇文章中&#xff0c;我将向大家介绍一种能够帮助企…

Python轴承故障诊断入门教学

目录 往期精彩内容&#xff1a; 1 工作室实验平台介绍 2 轴承故障诊断教程—数据集 3 轴承故障诊断教程—算法模型 3.1 振动分析方法 3.2 频域特征提取 3.3 时域特征提取 3.4 模型基础的机器学习方法 3.5 深度学习方法 3.6 时频域融合方法 3.7 信号重构方法 3.8 基…

Linux-----文本三剑客补充~

一、模糊匹配 模糊匹配用 ~ 表示包含&#xff0c;!~表示不包含 1、匹配含有root的列 [rootlocalhost ~]#awk -F: /root/ /etc/passwd root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin [rootlocalhost ~]#awk -F: $1~ /root/ /etc/passw…

知名开发工具RubyMine全新发布v2023.3——支持AI Assistant

RubyMine 是一个为Ruby 和 Rails开发者准备的 IDE&#xff0c;其带有所有开发者必须的功能&#xff0c;并将之紧密集成于便捷的开发环境中。 RubyMine v2023.3正式版下载 新版本改进AI Assistant支持、Rails应用程序和引擎的自定义路径、对Rails 7.1严格locals的代码洞察、RB…

人胰岛素样生长因子-1 ELISA试剂盒IGF-1 (human), ELISA kit

高灵敏ELISA试剂盒&#xff0c;4小时内可得结果&#xff0c;最低可检测34.2 pg/ml的IGF-1 胰岛素样生长因子-1&#xff08;IGF-1&#xff09;是一种多肽激素&#xff0c;在结构上与胰岛素相似。它参与调节中枢和周围神经系统的神经元生长和发育。IGF-1是一种有效的神经元凋亡抑…

【Zookeeper】what is Zookeeper?

官网地址&#xff1a;https://zookeeper.apache.org/https://zookeeper.apache.org/ 以下来自官网的介绍 ZooKeeper is a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services. A…

机试复习-3

前言&#xff1a;前面耽误太多时间&#xff0c;2月份是代码月&#xff0c;一定抓紧赶上&#xff0c;每天至少两道题 day1 2024.2.6 1.排序开启&#xff1a; 1.机试考试&#xff1a;排序应用考察 c的qsort c的sort 作用&#xff1a;对数组&#xff0c;vector排序&#…

c#读取csv文件中的某一列的数据

chat8 (chat779.com) 上面试GPT-3.5,很好的浏览网站&#xff0c;输入问题&#xff0c;可得到答案。 问题1&#xff1a;c#如何在csv中读取某一列数据 解答方案&#xff1a;在 C#中&#xff0c;你可以使用File.ReadAllLines来读取CSV中的所有行&#xff0c;然后逐行解析每一行…

flask+vue+python跨区通勤人员健康体检预约管理系统

跨区通勤人员健康管理系统设计的目的是为用户提供体检项目等功能。 与其它应用程序相比&#xff0c;跨区通勤人员健康的设计主要面向于跨区通勤人员&#xff0c;旨在为管理员和用户提供一个跨区通勤人员健康管理系统。用户可以通过系统及时查看体检预约等。 跨区通勤人员健康管…

Linux 分析指定JAVA服务进程所占内存CPU详情

1、获取服务进程PID [rootVM-32-26-centos ~]# service be3Service status Application is running as root (UID 0). This is considered insecure. Running [25383]2、获取进程占用详情 [rootVM-32-26-centos ~]# cat /proc/25383/status Name: java Umask: 0022 State: S…

Linux 文件比较工具

在Linux系统中&#xff0c;文件比较是一种常见的任务&#xff0c;用于比较两个文件之间的差异。文件比较可以帮助我们找出两个文件的不同之处&#xff0c;或者确定它们是否完全相同。在Linux中&#xff0c;有多种方法可以进行文件比较。 1. diff 在Linux中&#xff0c;diff命…

啤酒:精酿啤酒与冷盘的清新搭配

在夏日的傍晚&#xff0c;当太阳逐渐西沉&#xff0c;微风轻轻拂过&#xff0c;与亲朋好友围坐在一起&#xff0c;享受Fendi Club啤酒与冷盘的清新搭配&#xff0c;无疑是一种生活的享受。这两者的结合&#xff0c;不仅为味蕾带来了全新的体验&#xff0c;更为我们带来了片刻的…

移位和位操作符的应用

前言 这里我将分享几道编程题目&#xff0c;主要使用移位和位操作符进行解答。 我们首先要知道两个数字进行异或操作的时候结果是位0的&#xff0c;即 a ^ a 0,并且我们还要知道 0 和任何数字异或的结果都是这个数字的本身&#xff0c;即 0 ^ a a; 交换变量&#xff…

24、数据结构/排序相关练习20240206

一、现有无序序列数组为{23,24,12,5,33,5,34,7}&#xff0c;请使用以下排序实现编程。 函数1&#xff1a;请使用冒泡排序实现升序排序 函数2&#xff1a;请使用简单选择排序实现升序排序 函数3&#xff1a;请使用快速排序实现升序排序 函数4&#xff1a;请使用插入排序实现…

粮油蔬菜配送投标书:打造高效供应链的秘诀

在快节奏的现代生活中&#xff0c;粮油蔬菜配送服务的重要性日益凸显。它不仅关系到千家万户的餐桌安全&#xff0c;更是城市高效运转的润滑剂。 1.投标书的“面子”&#xff1a;封面与目录 封面是投标书的第一印象&#xff0c;简洁、专业的设计能够传递出企业的专业性。目录…