n组人坐车,每组若干人,每个车不能超过4人,要求一组人必须坐在一起,不同组的也可以坐在一起,问最少需要多少辆车
贪心啦值得好好考虑一下
#include<stdio.h>
#include<string.h>
int main()
{
int n,a[100100],i,j,ans=0,b[10],x,y;
scanf("%d",&n);
memset(b,0,sizeof(b));
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);
b[a[i]]++;
}
ans+=(b[4]+b[3]);
if(b[2]>1)
{
if(b[2]%2==0) ans+=b[2]/2;
else
ans+=(b[2]/2+1);
}
else if(b[2]==1) ans+=1;
x=b[2]%2;
b[1]-=(x*2+b[3]);
if(b[1]>0)
{
if(b[1]<=4) ans+=1;
else if(b[1]%4==0) ans+=b[1]/4;
else ans+=(b[1]/4+1);
}
printf("%d\n",ans);
}