CF2001A.Make All Equal
入门
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
给你一个循环数组 a1,a2,⋯,an。
你可以对 a 数组进行最多 n−1 次操作:
- 设 m 为 a 数组现在的大小,你可以选择任意的两个相邻元素,使得前一个元素的值不大于后一个元素的值(特别的是 am 和 a1 是相邻的,且 am 是前一个元素),并将其中的任意一个删除。换句话说,选择一个整数 i(1≤i≤m)使得 ai≤a(imodm)+1 成立,并将 ai 或 a(imodm)+1 中的一个从 a 数组中删除。
你的目标是找到使所有元素相等所需的最小操作数。
输入格式
每一个测试点包含多组数据。第一行为数据组数 t(1≤t≤500)。下面是数据描述。
每一组数据的第一行为一个整数 n(1≤n≤100),表示 a 数组的大小。
数据的第二行为 n 个整数 a1,a2,⋯,an(1≤ai≤n),表示 a 数组的元素的值。
输出格式
对于每组数据,每行输出一个整数,表示使所有元素相等所需的最小操作数。
输入输出样例
输入#1
7 1 1 3 1 2 3 3 1 2 2 5 5 4 3 2 1 6 1 1 2 2 3 3 8 8 7 6 3 8 7 6 3 6 1 1 4 5 1 4
输出#1
0 2 1 4 4 6 3
说明/提示
在第一组数据中,a 数组只有一个元素,所以我们不能进行任何操作。
在第二组数据中,我们可以执行以下操作,使得 a 数组中的所有元素相等:
-
选择 i=2,删除 a3,则 a 数组将变为 [1,2]。
-
选择 i=1,删除 a1,则 a 数组将变为 [2]。
可以证明,我们不能进行少于 2 次的操作使得 a 数组中的所有元素相等,所以答案是 2。
输入解题思路,AI测评打分。不知道怎么写?