http://codeforces.com/contest/1408/problem/B
题意:要你构造m个b数组,使得每个b数组长度为n,且不同的数字最多为k。
解法:第一个b数组可以消去k个不同的数,后面的b数组可以消去(k-1)个数。
#include<bits/stdc++.h>
#define ll long long
#define ios ios::sync_with_stdio(false);cin.tie(0); cout.tie(0);
using namespace std;
const int maxn=5e2+5,INF=0x3f3f3f3f;
int vis[maxn],a[maxn];
int main()
{
ios;
int t;
cin>>t;
while(t--)
{
memset(vis,0,sizeof(vis));
int n,k,sum=0;
cin>>n>>k;
for(int i=0;i<n;i++)
{
cin>>a[i];
if(vis[a[i]]==0)
{
vis[a[i]]=1;
sum++;
}
}
if(k==1&&sum>1) cout<<-1<<endl;
else if(sum<=k) cout<<1<<endl;
else
{
if((sum-k)%(k-1)==0)
cout<<1+(sum-k)/(k-1)<<endl;
else cout<<2+(sum-k)/(k-1)<<endl;
}
}
return 0;
}