链接:
https://www.nowcoder.com/acm/contest/112/B
来源:牛客网
来源:牛客网
有n个队伍,每个队伍的人数小于等于5,每辆车最多坐5个人,要求一个队伍的人都在一辆车上,求最少的车数
输入描述:
第一行n 第二行n个数,表示每个队伍的人数
输出描述:
输出最少车数
示例1
输入
3 3 4 5
输出
3
备注:
n≤1e5 每个数小于等于5
题解:
每次比赛都只能水一道。。。也没时间去搞算法了,有比赛就参加呗,比完看看别人的思路,以求进步。签到题。。。。数据只组5,尽量往大的组,没啥技术含量。。。。。这段时间都是学javaee
原创代码:
#include<stdio.h>
#include<algorithm>
using namespace std;
int a[6];
int main()
{
int n,t;
scanf("%d",&n);
for(int i=1;i<6;i++)
a[i]=0;
for(int i=0;i<n;i++)
{
scanf("%d",&t);
a[t]++;
}
int ans=a[5];
ans=ans+a[4];
a[1]=max(a[1]-a[4],0);
ans=ans+a[3];
if(a[3]>a[2])
a[1]=max(a[1]-(a[3]-a[2])*2,0);
a[2]=max(a[2]-a[3],0);
ans=ans+a[2]/2;
a[1]=max(a[1]-a[2]/2,0);
if(a[2]%2!=0)
{
ans++;
a[1]=max(a[1]-3,0);
}
if(a[1]%5!=0)
ans++;
ans=ans+a[1]/5;
printf("%d\n",ans);
return 0;
}