Pinkie Pie Eats Patty-cakes(贪心或者二分)

Pinkie Pie has bought a bag of patty-cakes with different fillings! But it appeared that not all patty-cakes differ from one another with filling. In other words, the bag contains some patty-cakes with the same filling.

Pinkie Pie eats the patty-cakes one-by-one. She likes having fun so she decided not to simply eat the patty-cakes but to try not to eat the patty-cakes with the same filling way too often. To achieve this she wants the minimum distance between the eaten with the same filling to be the largest possible. Herein Pinkie Pie called the distance between two patty-cakes the number of eaten patty-cakes strictly between them.

Pinkie Pie can eat the patty-cakes in any order. She is impatient about eating all the patty-cakes up so she asks you to help her to count the greatest minimum distance between the eaten patty-cakes with the same filling amongst all possible orders of eating!

Pinkie Pie is going to buy more bags of patty-cakes so she asks you to solve this problem for several bags!

Input

The first line contains a single integer TT (1≤T≤1001≤T≤100): the number of bags for which you need to solve the problem.

The first line of each bag description contains a single integer nn (2≤n≤1052≤n≤105): the number of patty-cakes in it. The second line of the bag description contains nn integers a1,a2,...,ana1,a2,...,an (1≤ai≤n1≤ai≤n): the information of patty-cakes' fillings: same fillings are defined as same integers, different fillings are defined as different integers. It is guaranteed that each bag contains at least two patty-cakes with the same filling.

It is guaranteed that the sum of nn over all bags does not exceed 105105.

Output

For each bag print in separate line one single integer: the largest minimum distance between the eaten patty-cakes with the same filling amongst all possible orders of eating for that bag.

Example

input

Copy

复制代码
4
7
1 7 1 6 4 4 6
8
1 1 4 6 4 6 4 7
3
3 3 3
6
2 5 2 3 1 4

output

Copy

复制代码
3
2
0
4

Note

For the first bag Pinkie Pie can eat the patty-cakes in the following order (by fillings): 11, 66, 44, 77, 11, 66, 44 (in this way, the minimum distance is equal to 33).

For the second bag Pinkie Pie can eat the patty-cakes in the following order (by fillings): 11, 44, 66, 77, 44, 11, 66, 44 (in this way, the minimum distance is equal to 22).

思路:

题意:最大化相同的相邻a的距离,=》其实是平均分配

1,可以二分,也可以贪心推公式,我fw

2,贪心:找到出现最多次的几个数,x个出现num次的数,对其平均分配,其它的不用管,

答案=(n-num*x)/(x-1)+num-1;

(n-num*x)剩余的个数,/(x-1)相邻之间插得数的个数,num-1次数相同的数导致的距离

代码:

cpp 复制代码
int a[maxj];
void solve(){
    int n;cin>>n;
    map<int,int>mp;
    int mx=0,sum=0;
    for(int i=1;i<=n;++i){
        cin>>a[i];
        mp[a[i]]++;
        if(mp[a[i]]==mx)sum++;
        if(mp[a[i]]>mx){
            mx=mp[a[i]];
            sum=1;
        }
    }
    cout<<(n-sum*mx)/(mx-1)+sum-1<<'\n';
}
相关推荐
老师我太想进步了202611 小时前
【数据结构-3】算法美学之降复杂度
数据结构·算法
机器人零零壹16 小时前
技术白皮书:iRobotCAM如何解决机器人激光切割应用中的核心难点,从CAD离线编程到双目视觉定位与轨迹自适应提升复杂空间曲线切割的精度、效率与柔性化水平
人工智能·算法
布莱克60517 小时前
C/C++ 中变量的声明与定义:区别、联系与常见误区
c语言·开发语言·c++·声明·定义
LabVIEW开发17 小时前
LabVIEW 局部变量为何引发竞争条件?四种同步机制
开发语言·labview
benchmark_cc18 小时前
A 股、港股、美股如何建立统一的标的主数据格式?
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
ZhengEnCi18 小时前
大模型的分类到底怎么分:从基础模型到推理模型、从通用到专用的完整图谱
算法
Zenova EdgeOS19 小时前
Go 工业边缘错误处理实战:用 errors 构建可追溯错误链
开发语言·数据库·golang
取名真是19 小时前
Python 算法知识点从基础到进阶
开发语言·python·算法
罗西的思考20 小时前
【轻量化复刻大模型 / KIMI K3】KDA 模块交互式演示
人工智能·算法·机器学习
FRing0320 小时前
vue2干货总结3(computed计算属性、watch监听器)
开发语言·前端·vue.js·vue2