车做人

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Soul_97/article/details/80289912
链接:https://www.nowcoder.com/acm/contest/112/B
来源:牛客网

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld

题目描述

有n个队伍,每个队伍的人数小于等于5,每辆车最多坐5个人,要求一个队伍的人都在一辆车上,求最少的车数

输入描述:

第一行n
第二行n个数,表示每个队伍的人数

输出描述:

输出最少车数

思考 思考动脑子

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n;
	int a[6];
	memset(a,0,sizeof(a));
	cin >> n;
	for(int i = 1;i <= n;i ++)
	{
		int t;
		cin >> t;
		a[t] ++;   //记录 x人的队有多少个 
	}
	
	int sum = 0;
	while(n > 0)
	{
		int tmp = 5;
		
		for(int i = 5;i >= 1;i --)
		{
			while(a[i] != 0 && tmp >= i)
			{
				tmp -= i;   //  每个车最多5个人 尽量去凑5人车   
				a[i] --;   //少一个队伍 
				n --;  //每编一次 就相当于少一个队伍 
			}
		}
		sum ++;
	}
	cout << sum << endl;
    return 0;
}

展开阅读全文

没有更多推荐了,返回首页