Make It Ugly(模拟,序列长度)

文章目录

  • 题目描述
    • 输入格式
    • 输出格式
    • 样例输入1
    • 样例输出1
    • 样例输入2
    • 样例输出2
    • 样例输入3
    • 样例输出3
    • 提交链接
    • 提示
  • 解析
  • 参考代码

题目描述

让我们把一个数组 a a a 称作美丽的数组,如果你能通过任意次数(可能是零)的下面操作使数组中的所有元素都相同的话:

  • 选择一个索引 i ( 2 ≤ i ≤ ∣ a ∣ − 1 , a i − 1 = a i + 1 ) i(2 \leq i \leq |a|-1,a_{i-1}=a_{i+1}) i(2ia1ai1=ai+1) ,然后将 a i a_i ai 替换为 a i − 1 a_{i-1} ai1

给你一个漂亮的数组 a 1 , a 2 , . . . , a n a_1,a_2,...,a_n a1,a2,...,an,要使数组不再美丽,至少要删除多少个元素?禁止交换元素。如果不可能这样做,那么输出 − 1 -1 1

输入格式

第一行包含一个整数 n ( 1 ≤ n ≤ 3 ∗ 1 0 5 ) n(1 \leq n \leq 3 * 10^5) n(1n3105)

第二行包含 n n n 个整数 a 1 , a 2 , . . . , a n ( 1 ≤ a i ≤ n ) a_1,a_2,...,a_n(1 \leq a_i \leq n) a1,a2,...,an(1ain)

输出格式

输出一个整数–为了使数组 a a a 不再美丽,你必须从数组 a a a 中移除的最小元素数。
如果不可能,那么输出 -1。

样例输入1

3
2 2 2

样例输出1

-1

样例输入2

5
1 2 1 2 1

样例输出2

1

样例输入3

7
3 3 3 5 3 3 3

样例输出3

3

提交链接

https://hydro.ac/d/lp728/p/16

提示

保证输入的 a a a 数组为美丽的数组。

样例解释:
在第一个测试案例中,不可能通过修改数组的方式使其不再美丽。无论我们从数组中删除多少数字,由相同数字组成的数组都会保持美丽。

在第二个测试案例中,你可以删除索引 5 5 5 中的数字。这样得到的数组将是 [ 1 , 2 , 1 , 2 ] [1,2,1,2] [1,2,1,2] 让我们看看它是否美丽。有两种操作可供选择:

  • 选择 i = 2 i=2 i=2:数组变为 [ 1 , 1 , 1 , 2 ] [1,1,1,2] [1,1,1,2]。不能再对其进行其他操作,而且数字也不尽相同。
  • 选择 i = 3 i=3 i=3:数组变为 [ 1 , 2 , 2 , 2 , ] [1,2,2,2,] [1,2,2,2,]。也不能对其进行更多的运算,数字仍然不完全相同。

因此,数组 [ 1 , 2 , 1 , 2 ] [1,2,1,2] [1,2,1,2] 并不美观。

在第三个测试用例中,可以删除前三个元素。这样得到的数组 [ 5 , 3 , 3 , 3 ] [5,3,3,3] [5,3,3,3] 并不美观。

解析

数组 a a a 为美丽数组,则一定能是所有的元素都相同,即 a [ i ] = x a[i]=x a[i]=x

我们在变换一致的过程中,能选择的下标的范围为 2 ≤ i ≤ ∣ a ∣ − 1 2 \leq i \leq |a|-1 2ia1 ,是无法对 a [ 1 ] a[1] a[1] a [ n ] a[n] a[n] 来进行操作的。所以我们可以得出 x x x 一定是等于 a [ 1 ] a[1] a[1]

如何让数组不再美丽,可以的操作有:

  • 删除等于 a [ 1 ] a[1] a[1] 的整个数字前缀
  • 删除等于 a [ 1 ] a[1] a[1] 的整个数字后缀
  • 选择两个不等于 a [ 1 ] a[1] a[1] 的数字,删除它们之间的所有数字,使这两个数字相邻。

答案变为:找出等于 a [ 1 ] a[1] a[1] 的最短数块。

参考代码

#include <bits/stdc++.h>
using namespace std;
const int maxn = 3e5 + 9;
int t , n , a[maxn];
int main()
{
	cin >> n;
	for(int i = 1; i <= n; i++)
		cin >> a[i];
	int idx = a[1];
	int mi = 9999999 , len = 0;
	for(int i = 1; i <= n; i++)
	{
		if(a[i] == idx)
			len++;
		else
		{
			mi = min(mi , len);
			len = 0;
		}
	}
	mi = min(mi , len);
	if(mi != n)
		cout << mi << endl;
	else
		cout << -1 << endl;
	return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

FFmpeg: 自实现ijkplayer播放器--01项目简介

文章目录 项目介绍流程图播放器实现过程界面展示项目代码 项目介绍 此项目基于FFmeg中 ffplay.c进行二次开发&#xff0c;实现基本的功能&#xff0c;开发软件为Qt 项目优势&#xff1a; 参考ijkplayer播放器&#xff0c;实现UI界面和播放器核心进行解耦&#xff0c;容易添加…

SpringBoot3 函数式web 小记

说明&#xff1a;函数式web是spring5.2之后的一个新特性&#xff0c;Spring Boot 3 进一步优化了这一模型&#xff0c;为开发现代 Web 应用提供了更加灵活、简洁的方法&#xff1b; 函数式web的四大核心对象 - RouterFunction&#xff1a;定义路由信息 - RequestPredicates&am…

15_SpringBoot

文章目录 SpringBoot创建SpringBoot应用官网IDEApom.xml文件启动类 整合SpringMVC整合配置类静态资源处理FilterTomcat其他配置 整合MyBatis约定大于配置的原理配置文件中的值的获取yml形式的配置文件约定大于配置的说明注解配置文件配置项 SpringBoot SpringBoot简化Spring阶…

强化网络安全防线,您的等级保护措施到位了吗?

在这个信息化飞速发展的时代&#xff0c;网络安全已经成为我们每个人都需要关注的问题。无论是企业还是个人&#xff0c;我们的工作和生活都越来越依赖于网络。确保网络环境的安全&#xff0c;防止信息泄露和网络攻击&#xff0c;已经成为了一项至关重要的任务。等级保护制度作…

现货白银的止损:原始止损和移动止损

止损是我们做现货白银必备的工具&#xff0c;它的主要功能是控制投资者的亏损&#xff0c;进而控制我们在交易中的风险。而现货白银的止损主要有两种&#xff0c;一个是原始止损&#xff0c;另外一个是移动止损。 原始止损是我们现货白银止损的基本方法。原始止损的意思就是初次…

Git回滚版本并push到远端master

1、查看日志 git log 2、还原最近的版本 () --git reset --hard commit-id 如&#xff1a;git reset --hard d84da14bf2743683eca7a015f56114faaa344f42 3、覆盖分支版本 git push -f origin dev 回滚本地master完成后&#xff0c;将回滚后的代码push到远端master&#xf…

C++ | Leetcode C++题解之第25题K个一组翻转链表

题目&#xff1a; 题解&#xff1a; class Solution { public:// 翻转一个子链表&#xff0c;并且返回新的头与尾pair<ListNode*, ListNode*> myReverse(ListNode* head, ListNode* tail) {ListNode* prev tail->next;ListNode* p head;while (prev ! tail) {ListN…

C++练级之路——类和对象(中二)

1、运算符重载 C为了增强代码的可读性引入了运算符重载&#xff0c;运算符重载是具有特殊函数名的函数&#xff0c;也是具有其返回值类型&#xff0c;函数名字以及参数列表&#xff0c;其返回值类型和参数列表与普通的函数类似。 函数名字为&#xff1a;关键字operator后面接需…

华为ensp中静态路由和默认路由的原理及配置

作者主页&#xff1a;点击&#xff01; ENSP专栏&#xff1a;点击&#xff01; 创作时间&#xff1a;2024年4月17日17点37分 默认路由 [Router] ip route-static <目的网络> <目的网络掩码> <下一跳地址>默认路由的作用是将无法匹配路由表中其他路由表项的…

储能的全生命周期成本即平准化度电成本的计算方法及python实践

1. 平准化度电成本&#xff08;LCOE&#xff09;是一种衡量电力项目经济性的指标 LCOE&#xff08;Levelized Cost of Energy,&#xff09;的概念最早由美国国家可再生能源实验室&#xff08;NREL&#xff09;在1995年提出&#xff0c;它是通过将一个项目生命周期内的所有成本…

公司微信公众号怎么创建?

公众号已经成为企业、品牌、个人IP与粉丝互动的重要平台。今天&#xff0c;伯乐网络传媒就来深入探讨如何巧妙地创建属于自己的微信公众号&#xff0c;为公司或品牌打造一个线上影响力的坚实基石。 一、注册微信公众号 第一步&#xff1a;访问微信公众平台官网 第二步&#x…

27.5k star!微软开源的项目,他好像真的想教会你 AI【文末带源码】

AI 和机器学习&#xff08;ML&#xff09;的发展正在改变我们的世界&#xff0c;从智能助手到自动驾驶汽车&#xff0c;无所不在。对于我的读者朋友来说&#xff0c;大家肯定是多多少少的使用过各种 AI 工具。然而&#xff0c;AI 和 ML 背后的工作机制究竟是什么样的呢&#xf…

volatile

volatile&#xff1a; 用来声明变量的关键字之一&#xff0c;它的主要作用是确保多个线程能够正确地处理共享变量。在多线程编程中&#xff0c;如果一个变量被多个线程共享并且这些线程可能同时修改该变量的值&#xff0c;那么就需要使用 volatile 关键字来保证线程之间对该变量…

IPV6——缓解地址池枯竭

目录 一.IPV6的来源 二.关于IPV6 1.’无限‘的地址空间 2.简化报文头部 3.层次化结构设计 4.即插即用 5.安全特性 6.Qos特性 三.IP v4&#xff0c;IP v6报文头部 IP v4 重点—TTL&#xff08;Time to live&#xff09; —— 存活时间&#xff0c;用于三层防环&#…

二维码电子画册制作教程,教你如何做出高端作品!

当今社会&#xff0c;二维码已经成为了信息传递的重要方式之一&#xff0c;其在电子商务、广告营销、活动推广等领域广泛应用。而如何将二维码巧妙地融入电子画册中&#xff0c;制作出高端、具有吸引力的作品&#xff0c;成为了许多设计师和营销人员关注的焦点 但是很多人却不知…

K8s的亲和、反亲和、污点、容忍

1 亲和与反亲和 亲和性的原理其实很简单&#xff0c;主要利用label标签结合nodeSelector选择器来实现 1.1 Pod和Node 从pod出发&#xff0c;可以分成亲和性和反亲和性&#xff0c;分别对应podAffinity和podAntiAffinity。从node出发&#xff0c;也可以分成亲和性和反亲和性&…

FANUC机器人通过ROBOGUIDE实现与实际的机器人进行程序导入导出的具体方法示例

FANUC机器人通过ROBOGUIDE实现与实际的机器人进行程序导入导出的具体方法示例 如下图所示,在电脑的开始菜单中找到”Robot Neiborhood”,点击进入, 如下图所示,设置要连接的机器人名称和主机IP地址(要确保自己的电脑和机器人IP地址在同一网段内),点击Add添加, 添加在线…

[Qt网络编程]之获取基本网络信息

前言 获取主机的网络地址和接口信息是进行网络编程的第一步&#xff0c;也是网络编程的基础。Qt提供了网络接口类 QNetworkInterface、网络地址人口类 QNetworkAddressEntry 和主机地址类 QHostAddress 来获取和使用地址信息。其中网络接口类 QNetworkInterface 描述了主机的卫…

光电水位开关数字信号与模拟信号的区别

如今随着液位检测技术的不断发展&#xff0c;检测液位的方法也越来越多&#xff0c;在小家电领域应用最多的液位检测方法就是光电液位传感器&#xff0c;光电液位传感器分为数字信号和模拟信号两种&#xff0c;都是输出高低电压信号&#xff0c;但输出的电压不一样。 数字信号…

OJ 连续数的和 球弹跳高度的计算【C判断是否为完全平方数】【格式输出%g输出全部小数部分】

连续数的和 判断是否为完全平方数有两种方法 1.遍历所有小于该数的整数&#xff0c;有一个满足平方与该数相等&#xff0c;则是完全平方数 2.用sqrt()或pow()函数对该数开方&#xff0c;取整&#xff08;舍去小数部分&#xff09;&#xff0c;再平方&#xff0c;与该数相等则…