codeforces 158B-C语言解题报告
Posted DQ_CODING
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了codeforces 158B-C语言解题报告相关的知识,希望对你有一定的参考价值。
题目解析
代码
#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;
}
以上是关于codeforces 158B-C语言解题报告的主要内容,如果未能解决你的问题,请参考以下文章