acwing周赛140 b题

思路:我们按照从小到大的顺序将数组逆转好,然后枚举数组首项,分别让其+1,-1,+0,然后求出公差,从前往后遍历即可。

代码:

int ans1(){//不动int cha = (a[n] - a[1] + 1) / (n - 1);int t = a[1];int cnt = 0;for(int i = 2;i <= n;i ++){t += cha;if(abs(t - a[i]) > 1)return 0x3f3f3f3f;if(t != a[i])cnt ++;}return cnt;
}int ans2(){//+1int cha = (a[n] - a[1]) / (n - 1);int t = a[1] + 1;int cnt = 1;for(int i = 2;i <= n;i ++){t += cha;if(abs(t - a[i]) > 1)return 0x3f3f3f3f;if(t != a[i])cnt ++;}return cnt;
}int ans3(){//-1int cha = (a[n] - a[1] + 2) / (n - 1);int t = a[1] - 1;int cnt = 1;for(int i = 2;i <= n;i ++){t += cha;if(abs(t - a[i]) > 1)return 0x3f3f3f3f;if(t != a[i])cnt ++;}return cnt;
}void solve(){cin >> n;vector<int>b(n + 1);for(int i = 1;i <= n;i ++)cin >> a[i], b[i] = a[i];sort(b.begin() + 1,b.end());if(a[1] > a[n])reverse(a + 1,a + 1 + n);if(n <= 2){cout << 0;return;}int ans = min({ans1(),ans2(),ans3()});if(b[1] == b[n])ans = 0;if(ans > n)cout << -1;elsecout << ans;
}

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

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

相关文章

未来时尚:数字化管理引领服装企业商品计划的创新浪潮

时尚产业正经历着一场数字化的浪潮&#xff0c;数字化管理正成为引领服装企业商品计划的不可忽视的创新力量。这一变革不仅影响了企业内部的运营方式&#xff0c;更深刻地塑造了未来时尚的面貌。本文将深入探讨数字化管理如何领导着服装企业商品计划进入创新浪潮&#xff0c;重…

Zabbix简单介绍

Zabbix简单介绍 Zabbix简介 Zabbix是一个企业级的、开源的、分布式监控套件&#xff0c;用于监控IT基础设施的可用性和性能&#xff1b;Zabbix可以监控网络和服务的状况&#xff1b;Zabbix利用灵活的告警机制&#xff0c;允许用户对事件发送基于邮件、短信、微信和钉钉等告警…

c语言-柔性数组

文章目录 前言一、柔性数组的介绍1.1 柔性数组的定义 二、柔性数组的使用2.1 使用说明2.2 结构体中的成员只包含一个柔性数组成员2.3 结构体中的成员包含其他成员和一个柔性数组成员 三、模拟柔性数组总结 前言 本篇文章介绍c语言中的柔性数组。 一、柔性数组的介绍 1.1 柔性…

JavaSec基础命令执行

记录https://github.com/javaweb-sec/javaweb-sec的学习 CommandExecute Runtime#exec ProcessBuilder#start 以上两个最终都要调到ProcessImpl 而ProcessImpl会调用native的forkAndExec 实际最终都是调到Java_java_lang_ProcessImpl_forkAndExec 而我们只需要直接调用最…

单调栈第二天(还没写完)

503.下一个更大元素II 力扣题目链接(opens new window) 给定一个循环数组&#xff08;最后一个元素的下一个元素是数组的第一个元素&#xff09;&#xff0c;输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序&#xff0c;这个数字之后的第一个比它更…

一、对人工智能大模型了解与认知

黑8说 月黑风高&#xff0c;乌云密布&#xff0c;树木低垂&#xff0c;黯淡沉闷。这黎明前的风暴&#xff0c;预示着新时代的变革即将到来。 在一个8线小城市的办公室中 黑8对主任说&#xff1a; 世界上有男人、女人、人妖&#xff0c;米国有1/3男&#xff0c;2/3女…&#xff…

Scratch:启蒙少儿编程的图形化魔法

在当今这个数字化时代&#xff0c;编程已经成为了一项重要的基础技能。就像学习阅读和写作一样&#xff0c;掌握编程能够打开通往未来世界的大门。对于孩子们来说&#xff0c;Scratch作为一种图形化编程语言&#xff0c;不仅简单有趣&#xff0c;而且非常适合作为编程学习的入门…

VS生成报错:MSB8036 The Windows SDK version 8.1 was not found.找不到 Windows SDK 版本 8.1

目录 一、查看本机SDK二、 解决法一&#xff1a;适配本电脑的SDK法二&#xff1a;下载SDK 8.1 VS生成报错&#xff1a;MSB8036 找不到 Windows SDK 版本 8.1。请安装所需版本的 Windows SDK&#xff0c;或者在项目属性页中或通过右键单击解决方案并选择“重定解决方案目标”来更…

解决 [Vue warn]:Avoid mutating a prop directly 警告

错误信息 [Vue warn]: Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders. Instead, use a data or computed property based on the prop’s value. Prop being mutated: “xxx” 错误原因 所有的 prop 都使得…

感谢有你,1Panel开源面板项目致敬社区开发者

2024年1月24日&#xff0c;1Panel开源面板项目GitHub Star数成功突破15,000大关。 1Panel开源项目&#xff08;https://github.com/1Panel-dev&#xff09;于2023年3月20日正式发布。作为一款现代化、开源的Linux服务器运维管理面板&#xff0c;1Panel旨在通过开源的方式&…

臻于至善,CodeArts Snap 二维绘图来一套不?

前言 我在体验 华为云的 CodeArts Snap 时&#xff0c;第一个例子就是绘制三角函数图像&#xff0c;功能注释写的也很简单。 业务场景中&#xff0c;有一类就是需要产出各种二维图形的&#xff0c;比如&#xff0c;折线图、散点图、柱状图等。 为了提前积累业务素材&#xf…

iOS推送通知

文章目录 一、推送通知的介绍1. 简介2. 通知的分类 二、本地通知1. 本地通知的介绍2. 实现本地通知3. 监听本地通知的点击 三、远程通知1. 什么是远程通知2. 为什么需要远程通知3. 远程通知的原理4. 如何做远程通知5. 远程通知证书配置6. 获取远程推送要用的 DeviceToken7. 测试…