题目大意
一些人打车,那些人分组,每个组有1或2或3或4人,但是一个车这能装下四个人,求。。至少几辆车啊
解题思路
四人组一辆车,两个两人组一辆车,一个三人组加一个一人组一辆车,大体是这样,其实这个题不难,就是太他妈绕了啊喂,先判断两人组吧,如果有偶数个两人组,那就好办了,但是如果有奇数个两人组,那就先把多出来的那两个人放一边
再看三人组和一人组,有两种情况,(1)三人组的个数大于等于一人组,这种情况下,会剩下几组三人组,那就每组坐一个车,剩下的二人组坐一个车。(2)三人组的个数小于一人组,这种情况下,会剩下几个一人组,,,然后就统计那些一人组的人数加上那两个人,,如果统计的人数模4等于0,车的个数就是它除4,否则,就是先除四,再加一
代码如下
#include<stdio.h>
int main()
{
long long n,a=0,b=0,c=0,sum=0,x1,x2,x3,y;
int m[100010],i;
scanf("%lld",&n);
for(i=0;i<n;i++)
scanf("%d",&m[i]);
for(i=0;i<n;i++)
{
if(m[i]==1)
a++;
if(m[i]==2)
b++;
if(m[i]==3)
c++;
if(m[i]==4)
sum++;
}
if(b%2==1)
x2=1;
else
x2=0;
sum+=(b/2);
if(c>=a)
{
sum+=a;
x3=c-a;
x1=0;
sum=sum+x2+x3;
}
else
{
sum+=c;
x1=a-c;
x3=0;
y=(2*x2)+x1;
if(y%4==0)
sum=sum+(y/4);
else
sum=sum+(y/4)+1;
}
printf("%lld\n",sum);
return 0;
}
啊啊啊啊啊啊