Wannafly挑战赛15 B 车辆安排(java)

题目描述

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

输入描述:

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

输出描述:

输出最少车数

示例1

输入

3
3 4 5

输出

3

备注:

n≤1e5

每个数小于等于5

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();//队伍个数
		int[] a=new int[6];
		for(int i=0;i<n;i++)
		{
			int b=sc.nextInt();
			a[b]++;//人数为1,2,3,4,5的队伍的个数
		}
		int ans=0;
		while(n>0)
		{
			ans++;//车辆数加一
			int k=5;//车剩余的座位数
			for(int i=5;i>=0;i--)
			{
				while(k>=i&&a[i]!=0)//座位数大于队伍人数,且队伍不为0
				{
					k-=i;//座位数减去队伍人数
					a[i]--;//固定数量的队伍个数减一
					n--;//队伍个数减一
				}
			}
		}
		System.out.println(ans);

	}

}

猜你喜欢

转载自blog.csdn.net/hui_1997/article/details/80310948