当前位置: 首页 > news >正文

Make All Equal

给定一个循环数组 a1,a2,…,ana1​,a2​,…,an​。

你可以对 aa 至多执行 n−1n−1 次以下操作:

  • 设 mm 为 aa 的当前大小,你可以选择任何两个相邻的元素,其中前一个不大于后一个(特别地,amam​ 和 a1a1​ 是相邻的,amam​ 是前一个),并删除其中的一个。换句话说,选择一个整数 ii (1≤i≤m1≤i≤m) 使得 ai≤a(imodm)+1ai​≤a(imodm)+1​ 成立,然后从 aa 中删除 aiai​ 或 a(imodm)+1a(imodm)+1​ 之一。

你的目标是找到使得 aa 中所有元素相等所需的最小操作次数。

输入

每个测试包含多个测试用例。第一行包含测试用例的数量 tt (1≤t≤5001≤t≤500)。接下来是测试用例的描述。

每个测试用例的第一行包含一个整数 nn (1≤n≤1001≤n≤100) — 数组 aa 的长度。

每个测试用例的第二行包含 nn 个整数 a1,a2,…,ana1​,a2​,…,an​ (1≤ai≤n1≤ai​≤n) — 数组 aa 的元素。

输出

对于每个测试用例,输出一行包含一个整数:使得 aa 中所有元素相等所需的最小操作次数。

示例

InputcopyOutputcopy
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
0
2
1
4
4
6
3

注意

在第一个测试用例中,aa 中只有一个元素,因此我们无法进行任何操作。

在第二个测试用例中,我们可以执行以下操作使得 aa 中所有元素相等:

  • 选择 i=2i=2,删除 a3a3​,然后 aa 将变为 [1,2][1,2]。
  • 选择 i=1i=1,删除 a1a1​,然后 aa 将变为 [2][2]。

可以证明,我们无法使用少于 22 次操作使得 aa 中所有元素相等,因此答案是 22。

//找规律,总数减去最多相等数的个数
#include<bits/stdc++.h>
using namespace std;
map<int,int>mapp;
int main(){int t;cin>>t;while(t--){mapp.clear();int n,maxn=-1;cin>>n;int h=n;while(h--){int k;cin>>k;mapp[k]++;maxn=max(mapp[k],maxn);}cout<<n-maxn<<endl;}
} 

 

相关文章:

  • 灵活运用 NextJS 服务端组件与客户端组件
  • 远程终端登录和桌面访问(嵌入式开发)
  • 网络安全基础--第十天
  • 第十一章 注解
  • 【文献精读】Explaining grokking through circuit efficiency
  • 传输层协议:网络通信的关键纽带
  • Matlab自学笔记五十七:符号运算、可变精度运算、双精度浮点型运算,三种运算精度的概念、比较、选择和应用
  • 主线程极致优化:让CPU“零闲置“的实战方案
  • 制作一款打飞机游戏64:关卡设计
  • 推荐算法八股
  • LVS负载均衡
  • Java复习Day26
  • 线程相关面试题
  • JSCH使用SFTP详细教程
  • 【小红书】API接口,获取笔记列表
  • H.264编码
  • 深拷贝与浅拷贝的区别?如何手写实现一个深拷贝?
  • 基于51单片机和8X8点阵屏、独立按键的填充消除类小游戏
  • Linux操作系统-命令基础
  • 【leetcode-两数之和】
  • 做网站需要什么准备/软件开发app制作
  • 苏州网页制作培训/整站优化系统
  • 驻马店企业做网站/更厉害的病毒2024
  • 开发区网站制作公司/外链网盘网站
  • 网站引导页分为三个板块设计风格/广告联盟赚钱app
  • 石家庄网站建设设计/怎么找平台推广自己的产品