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语言解题报告的主要内容,如果未能解决你的问题,请参考以下文章

codeforces 122A-C语言解题报告

codeforces 281A-C语言解题报告

codeforces 133A-C语言解题报告

codeforces 1030A-C语言解题报告

codeforces 705A-C语言解题报告

codeforces 344A-C语言解题报告