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';
}
相关推荐
Logic1011 小时前
C语言/数据结构字符串题解:最短循环节——找出能重复构成原串的最短基础子串
c语言·数据结构·字符串·枚举·时间复杂度·算法题·kmp优化
129Lab1 小时前
BMS 核心算法:SOC 估算从安时积分到 LSTM-UKF 串级融合的 30 年演进(附 Python 实现)
python·算法·lstm·python3.11·bms·soc估算
kgkg1 小时前
我通过逆向学到了douyin的美颜算法
算法
anew___2 小时前
《从零手写操作系统 (30):环境变量与进程上下文——export/unset与继承语义》
java·开发语言·网络·jvm·算法
Cx330❀2 小时前
Qt 多线程深度解析:从底层原理到 UI 线程与同步实战
开发语言·qt·ui·搜索引擎·性能优化·图形渲染
垆边人似月.2 小时前
城市连通性(200分 / 并查集)
数据结构·算法·图论
西西弗Sisyphus2 小时前
Qt6 实现 会动的界面像物理世界一样
c++·qt
谢亮_vipxieliang2 小时前
Go GMP调度模型——从原理到实战的完整指南
开发语言·网络·golang
UIU1142 小时前
头文件可以防什么错?运用头文件做声明
c++·学习·c#
Gust of wind2 小时前
串与KMP模式匹配:存储结构、基本操作、next数组手算
c语言·数据结构·后端·算法