【备战秋招】每日一题:2023.04.08-春招-京东机试(第三题)-构造排列

为了更好的阅读体检,可以查看我的算法学习网
在线评测链接:P1173

题目内容

塔子哥是一个学生,他最近学习的时候遇到了一个题目,题目给定了一个长度为 n n n 的排列吗,题目要求将这个排列的前 k k k 个数排列成一个长度为 k k k 的排列,但是题目规定只能进行相邻两个数的交换操作,题目问最少需要多少次上述操作才能满足题目要求?

塔子哥思考了很久还是不会,他现在想请教你,想让你帮忙解决一下这个问题。

长度为 n n n 的排列指 1 1 1 n n n 中每个数都恰好出现 1 1 1 次。例如 [ 2 , 3 , 1 ] [2,3,1] [2,3,1] 是排列, [ 2 , 3 , 4 ] [2,3,4] [2,3,4] 则不是排列。

输入描述

第一行输入两个正整数 n n n k k k

第二行输入 n n n 个正整数 a i a_i ai ,代表塔子哥拿到的排列。

1 ≤ k ≤ n ≤ 200000 1\le k\le n\le 200000 1kn200000

1 ≤ a i ≤ n 1\le a_i\le n 1ain

输出描述

一个整数,代表最小的操作次数。

样例

输入

5 3
2 4 1 3 5

输出

2

样例解释

第一次交换 4 4 4 1 1 1 ,数组变成 [ 2 , 1 , 4 , 3 , 5 ] [2,1,4,3,5] [2,1,4,3,5]

第二次交换 4 4 4 3 3 3 ,数组变成 [ 2 , 1 , 3 , 4 , 5 ] [2,1,3,4,5] [2,1,3,4,5]

此时前 3 3 3 个数构成排列,满足条件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

塔子哥学算法

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值