D. Sequence and Swaps(思维)

news2024/12/26 22:51:01

Problem - 1455D - Codeforces

 

你的任务是使该序列排序(如果条件a1≤a2≤a3≤⋯≤an成立,它就被认为是排序的)。

为了使序列排序,你可以执行以下操作的任何次数(可能是零):选择一个整数i,使1≤i≤n且ai>x,并交换ai和x的值。

例如,如果a=[0,2,3,5,4],x=1,就可以进行以下操作序列。

选择i=2(这是可能的,因为a2>x),那么a=[0,1,3,5,4],x=2。
选择i=3(因为a3>x,所以有可能),然后a=[0,1,2,5,4],x=3。
选择i=4(因为a4>x,所以有可能),然后a=[0,1,2,3,4],x=5。
计算你必须执行的最小操作数,以使a成为排序的,或者报告说这是不可能的。

输入
第一行包含一个整数t(1≤t≤500)--测试案例的数量。

每个测试用例由两行组成。第一行包含两个整数n和x(1≤n≤500,0≤x≤500)--序列中元素的数量和x的初始值。

第二行包含n个整数a1,a2,...,an(0≤ai≤500)。

在输入的所有测试案例中,n的值之和不超过500。

输出
对于每个测试案例,打印一个整数--你必须执行的最小操作数,如果不可能,则打印-1。

例子
inputCopy
6
4 1
2 3 5 4
5 6
1 1 3 4 4
1 10
2
2 10
11 9
2 10
12 11
5 18
81 324 218 413 324
输出拷贝

3

0

0

-1

1

3

题解:
由于n的范围很小我们可以考虑暴力的方法,通过观察我们发现,如果出现a[i] > a[i+1]

如果可以修改结果就会变为a[i] = a[i-1] a[i-1] = a[i-2] .... a[i-k] = x

x = a[i]

x是在不断变大的,我们只需要模拟这个过程即可,并且每次check是否为非降序排列

#include<iostream>
#include<algorithm>
#include<cstring>
#include<string>
#include<map>
#include<vector>
#include<queue>
using namespace std;
#define int long long
int a[505];
int n,x;
int check()
{
	for(int i = 2;i <= n;i++)
	{
		if(a[i] < a[i-1])
		{
			return 0;
		}
	}
	return 1;
}
void solve()
{
//	int n,x;
	cin >> n >> x;
	for(int i = 1;i <= n;i++)
	{
		cin >> a[i];
	}
	if(check())
	{
		cout<<"0\n";
		return ;
	}
	int ans = 0;
	for(int i = 1;i <= n;i ++)
	{
		if(a[i] > x)
		{
			swap(a[i],x);
			ans++;
		}
		if(check())
		{
			cout<<ans<<"\n";
			return ;
		}
	}
	cout<<"-1\n";
	
}
signed main()
{
	int t = 1;
	cin >> t;
	while(t--)
	{
		solve();
	}
}

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

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

相关文章

数据结构 | 带头双向循环链表【无懈可击的链式结构】

不要被事物的表面现象所迷惑~&#x1f333;前言&#x1f333;结构声明&#x1f333;接口算法实现&#x1f34e;动态开辟&初始化【Init】&#x1f34e;尾插【PushBack】&#x1f34e;尾删【PopBack】&#x1f34e;头插【PushFront】&#x1f34e;头删【PopFront】&#x1f4…

思科防火墙应用NAT

♥️作者&#xff1a;小刘在C站 ♥️每天分享云计算网络运维课堂笔记&#xff0c;一起努力&#xff0c;共赴美好人生&#xff01; ♥️夕阳下&#xff0c;是最美的&#xff0c;绽放。 目录 一.思科防火墙的NAT 一种有四种&#xff0c; 二.动态NAT 配置 三.动态PAT配置 四…

哪些城市有PMP考试考点?PMP考试考场都在哪?

有不少伙伴对PMP的考试点存在一定的疑问&#xff0c;全国PMP考试具体考点位置是在哪呢&#xff1f; 根据过往常用考点&#xff0c;我们给大家汇总了2022年PMP考试全国考场地址&#xff0c;一起来看看吧&#xff01; 表格信息来自基金会官网11月27日PMP报名通知&#xff0c;仅作…

Spring Security多种用户定义方式

本文内容来自王松老师的《深入浅出Spring Security》&#xff0c;自己在学习的时候为了加深理解顺手抄录的&#xff0c;有时候还会写一些自己的想法。 Spring Security中存在两种类型的AutnenticationManager&#xff0c;一种是全局的AuthenticationManager&#xff0c;一种是局…

原版畅销36万册!世界级网工打造TCP/IP圣经级教材,第5版终现身

关于TCP/IP 现代网络中&#xff0c;以窃取信息或诈骗为目的的网站频频出现&#xff0c;蓄意篡改数据以及信息泄露等犯罪行为也在与日俱增。很多情况下&#xff0c;人们可能会认为人性本善&#xff0c;在享受着网络所带来的便捷性的同时&#xff0c;也就降低了对网络犯罪的设防…

深入理解java虚拟机:类文件结构(2)

文章目录Class类文件结构2.6 方法表集合2.7 属性表集合3. Class文件结构的发展Class类文件结构 接着上一篇&#xff0c;我们继续补充 2.6 方法表集合 Class文件存储格式中对方法的描述与对字段的描述几乎采用了完全一致的方式&#xff0c;方法表的结构如同字段表一样&#x…

算法设计与分析 SCAU17964 水桶打水

17964 水桶打水 时间限制:1000MS 代码长度限制:10KB 提交次数:25 通过次数:9 题型: 编程题 语言: G;GCC;VC;JAVA Description 有n个人&#xff08;n<100000&#xff09;带着大大小小的水桶容器&#xff08;每人一个水桶&#xff09;排队到r个&#xff08;r<1000&#…

JS基础习题

1.JavaScript变量命名规则 1.在JavaScript中以下&#xff0c;以下哪些变量名是非法的&#xff08;会导致程序报错&#xff09;&#xff1f; 1person name var $orderwera23 uiuiuqwer4_23aser2 A .1person&#xff0c;name B .name&#xff0c;var C .$orderwera23&#xff0c…

怎么自制小程序?【自己制作小程序】

说到制作小程序&#xff0c;有些动手能力比较强的小伙伴可能就在想怎么自制小程序。想自制小程序&#xff0c;至少也是需要会一些编程代码的&#xff0c;如果不懂代码就只能找其他方法了。那么怎么自制小程序呢&#xff1f; 现在市面上有很多的小程序制作工具&#xff0c;可以…

hexo建站新手入门

Hexo是一款基于Node.js的静态博客框架&#xff0c;依赖少易于安装使用&#xff0c;可以方便的生成静态网页托管在GitHub和Coding上&#xff0c;是搭建博客的首选框架。 hexo史上最全搭建教程 Hexo搭建步骤 安装Git安装Node.js安装HexoGitHub创建个人仓库生成SSH添加到GitHub…

几分钟让你了解Linux下文件权限掩码及作用

在说文件权限掩码之前&#xff0c;必须了解下linux下的文件权限&#xff0c;比如在linux下可以通过“ls -l”命令查看文件的权限&#xff0c;输入后可以获得如下显示&#xff1a; drwxrwxr-x 3 linux linux 4096 Jun 6 18:03 test 在显示中“drwxrwxr-x”这十个字母中第一个字母…

数据分析入门必看|数据分析到底应该学什么?

数据分析在工作和学习中用到的越来越多&#xff0c;以前也成体系的分享了一些内容&#xff0c;详情参考链接&#xff1a;数据分析系列 1/32 | 数据分析入门理解。在之前的分享内容里&#xff0c;是为了让大家更快上手入门去学习使用的&#xff0c;本次内容合计里&#xff0c;每…

知乎转发最高的 Java 面试成神笔记,GitHub 已下载量已过百万

在某论坛上面对于“中国程序员数量是否已经饱和或者过剩”这个话题很火&#xff01; 今年大家都有一个共同的感受&#xff1a;工作不好找&#xff0c;薪资不理想&#xff0c;面试造火箭。 其实&#xff0c;由于不仅是因为今年受疫情影响&#xff0c;很多公司经营不下去&#xf…

防不胜防?网络钓鱼攻击常用手法盘点与防护建议

【环境搭建资料、工具包、全套视频…等籽料】私信聆取 网络钓鱼攻击是最常见、最容易让受害者中招的网络犯罪之一&#xff0c;随着网络技术的不断发展&#xff0c;攻击者的伪装手段也变得愈发狡诈&#xff0c;攻击频次也再增高&#xff0c;各种新奇的攻击方式层出不穷。有些攻…

day30 SQL注入CTF二次堆叠DNS带外

二次注入 原理 二次注入是存储型注入&#xff0c;可以理解为构造恶意数据存储在数据库后&#xff0c;恶意数据被读取并进入到了SQL查询语句所导致的注入。恶意数据插入到数据库时被处理的数据又被还原并存储在数据库中&#xff0c;当Web程序调用存储在数据库中的恶意数据并执行…

成都地区一汽大众汽车4s店营销策略研究

目 录 第一章 绪论 1 1.1选题及意义 1 1.2 国内外现状 1 1.3研究主要内容 3 1.4研究方法 3 第二章 成都地区一汽大众汽车4S店营销市场调查分析 4 2.1调查目的 4 2.2调查过程 4 2.3数据分析与调查结果 4 2.4启示与思考 8 第三章 成都地区一汽大众汽车4S店SWOT分析 9 3.1成都地区…

过五关,斩六将!「网易/美团/菜鸟」已拿offer【Java岗】

经过两个月的辛苦奋战&#xff0c;最终拿到了网易、头条、字节、菜鸟的offer&#xff0c;感觉面试的时候还是很幸运的&#xff0c;很多题都是我之前刷题刷到过的&#xff0c;哈哈哈~~下面给广大网友们分享一下我的面经&#xff08;网易/美团/菜鸟&#xff09;供大家参考参考...…

python教程:*的用法,你可能错过了......

人生苦短&#xff0c;我用python python中*是非常常见的一个运算符&#xff0c;它主要有以下几个功能&#xff1a; 乘法运算符&#xff1b; 函数形参表示可变参数&#xff1b; 函数实参代表tuple&#xff1b; 序列解包为tuple&#xff1b; zip解包运算&#xff1b; 更多学习干…

SpringCloud学习笔记 - 消息总线 - Spring Cloud Bus

1. 消息总线简介 消息代理中间件构建了一个共用的消息主题让所有微服务实例订阅&#xff0c;当该消息主题产生消息时会被所有微服务实例监听和消费。 消息代理又是什么&#xff1f;消息代理是一个消息验证、传输、路由的架构模式&#xff0c;主要用来实现接收和分发消息&…

Java EE|进程与线程的区别与联系

大数据时代&#xff0c;数据规模非常庞大&#xff0c;所以我们在实际开发过程中&#xff0c;需要经常进行并发问题的处理。对于此问题&#xff0c;我们通常有两种解决方案&#xff1a;多进程方式和多线程方式。但是由于多进程对于资源的共享非常困难&#xff0c;而多线程并发可…