題目網址
題目解析
參考博客
代碼
#include<iostream>
#include<string.h>
#include<algorithm>
#include<stdio.h>
#include<math.h>
using namespace std;
int n,a[100005];
long long sum,s1,s2,s3;main()
{cin>>n;for(int i=1;i<=n;i++){cin>>a[i];if(a[i]==1) s1++;//統計每組人數,4人組存在時答案直接+1 if(a[i]==2) s2++;if(a[i]==3) s3++;if(a[i]==4) sum++;}sum=sum+min(s1,s3)+s2/2;s2=s2%2;//2人組組數變更 ,非0即1 if(s3>s1)sum=sum+s2+s3-s1;//剩余的3人組每組單獨一輛車,加上2人組 是否有余 else if(s1>s3){s1=s1-s3; //1人組 組數變更 if(s2==0){sum=sum+s1/4;if(s1%4!=0)sum=sum+1;}else{if(s1<=2)sum=sum+1;//余下的1人組小于2,和余下的2人組一輛車 else{sum=sum+1+(s1-2)/4;if((s1-2)%4!=0)sum=sum+1;}}}else sum=sum+s2;//1人組和3人組人數相同,直接加上剩下二人組的一或零輛車 cout<<sum;
}