题目描述
有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);
}
}
本文介绍了一个车队调度问题的解决算法:给定多个队伍及其人数,在确保同一队伍成员乘坐同一辆车的前提下,计算所需最少车辆数。该算法通过逐个处理队伍并尽可能填满每辆车来实现最优解。
&spm=1001.2101.3001.5002&articleId=80310948&d=1&t=3&u=db24ab6f4aeb4709be8e6428a1af1f70)
626

被折叠的 条评论
为什么被折叠?



