Vj C - Create The Teams 7.26
Posted syrupwrld999
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vj C - Create The Teams 7.26相关的知识,希望对你有一定的参考价值。
#include<bits/stdc++.h>
#define ll long long
#define speed_up ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
using namespace std;
const ll nl=1e5+5;
/*
创建团队有n个程序员,第i个程序员的技能是ai,把他们分成几个非空的团队。要从它们中集合最大数量的团队。
每个团队都有一个限制,团队中程序员的数量乘以团队中所有程序员的最低技能必须至少为:c。
每个程序员最多只能属于一个团队。有些程序员可能没有团队。计算您可以集合的团队的最大数量。
*/
bool cmp(int a,int b)
{
return a>b;
}
int main()
{
speed_up;
int t,n,x;
cin>>t;
while(t--)
{
cin>>n>>x;
int a[n];
for(int i=0;i<n;i++)
{
cin>>a[i];
}
sort(a,a+n,cmp);//从大到小排序
int p=0,s=0,i=0,k=2;
for(;i<n;i++)//分两种情况,一种是一人一队
{
if(a[i]>=x)
{
s++;
}
else break;
}
i++;
for(;i<n;i+=k)//k人一队
{
if(a[i]*k>=x)
{
s++;
}
else
{
i-=k;//样例二,不够x再从没组队的人中从头算起
k++;
}
}
cout<<s<<endl;
}
#define ll long long
#define speed_up ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
using namespace std;
const ll nl=1e5+5;
/*
创建团队有n个程序员,第i个程序员的技能是ai,把他们分成几个非空的团队。要从它们中集合最大数量的团队。
每个团队都有一个限制,团队中程序员的数量乘以团队中所有程序员的最低技能必须至少为:c。
每个程序员最多只能属于一个团队。有些程序员可能没有团队。计算您可以集合的团队的最大数量。
*/
bool cmp(int a,int b)
{
return a>b;
}
int main()
{
speed_up;
int t,n,x;
cin>>t;
while(t--)
{
cin>>n>>x;
int a[n];
for(int i=0;i<n;i++)
{
cin>>a[i];
}
sort(a,a+n,cmp);//从大到小排序
int p=0,s=0,i=0,k=2;
for(;i<n;i++)//分两种情况,一种是一人一队
{
if(a[i]>=x)
{
s++;
}
else break;
}
i++;
for(;i<n;i+=k)//k人一队
{
if(a[i]*k>=x)
{
s++;
}
else
{
i-=k;//样例二,不够x再从没组队的人中从头算起
k++;
}
}
cout<<s<<endl;
}
return 0;
}
}
以上是关于Vj C - Create The Teams 7.26的主要内容,如果未能解决你的问题,请参考以下文章
BZOJ 3022 [Balkan2012]The Best Teams(扫描线+线段树)