首页 > 试题广场 >

美妙的约会

[编程题]美妙的约会
  • 热度指数:6396 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
牛牛和妞妞在一天晚上决定一起去看一场情人节演唱会,可是由于这场演唱会实在太出名了,有很多情侣都来观看,牛牛和妞妞不小心被人流冲散了!
维持秩序的人决定,让大家排成一列,相邻两个进去的人(2k-1和2k,k为正整数)坐在相邻座位。但是现在的队伍乱糟糟的,有很多情侣都不在相邻位置。维持秩序的人同意让情侣们跟相邻的人交换位置,直到所有情侣都在2k-1和2k位置上为止。
但是维持秩序的人很没有耐心,所以需要最少的交换次数,你能帮情侣们算出这个次数吗?

输入描述:
第一行一个整数n,表示一共有n对情侣,编号从1到n。同一对情侣编号相同。1<=n<=100
第二行2n个整数ai,表示编号为ai的情侣在第i个位置。1<=ai<=n


输出描述:
一个整数,代表最少交换次数。
示例1

输入

3
3 3 2 2 1 1

输出

0
示例2

输入

4
1 2 3 4 1 2 3 4

输出

6
头像 牛客328964442号
发表于 2021-09-11 16:19:03
参考解法https://blog.csdn.net/meng_lemon/article/details/97141897 #include<iostream> #include<stdio.h> #include<algorithm> using namespa 展开全文
头像 牛客289281343号
发表于 2020-04-27 15:45:11
解题思路:当两个元素只交换一次时,次数最少。从数组第一个元素开始交换,寻找与元素值相同的另一个元素的位置,若不是相邻位置,计算出距离即此次的交换次数并交换;再以第三个元素为标志,重复上述步骤,直至遍历完整个数组。import java.util.;public class Main{ publ 展开全文
头像 苏觅云
发表于 2022-05-26 19:09:26
import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); ArrayList< 展开全文
头像 uper0000
发表于 2025-12-18 22:49:11
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); while 展开全文
头像 苏觅云
发表于 2022-05-26 16:03:49
n = int(input()) n2 = n + n ipt = input().split(' ') arr = [] for i in range(n2): arr.append(int(ipt[i])) ans = 0 while len(arr) > 0: first 展开全文
头像 bandiaoz
发表于 2024-12-26 14:29:39
解题思路 这是一道求最少交换次数的题目,主要思路如下: 问题分析: 对情侣需要坐在相邻位置 和 可以通过相邻位置的交换来调整座位 需要计算最少的交换次数 贪心策略: 从后向前处理每对情侣 对于每对情侣,找到对应编号的人 通过相邻交换将其移动到正确位置 累计交换次数 优化: 展开全文
头像 我不打朋友圈
发表于 2021-12-15 15:46:23
import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; import java.util.ArrayList; import java.util.LinkedList; 展开全文