链接:
https://www.nowcoder.com/acm/contest/112/B
来源:牛客网
来源:牛客网
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
题目描述
有n个队伍,每个队伍的人数小于等于5,每辆车最多坐5个人,要求一个队伍的人都在一辆车上,求最少的车数
输入描述:
第一行n 第二行n个数,表示每个队伍的人数
输出描述:
输出最少车数
代码如下:
#include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<string> #include<queue> #include<vector> using namespace std; int a[6]={0}; int main(){ int n,tmp; scanf("%d",&n); for(int i=0;i<n;i++){ scanf("%d",&tmp); a[tmp]++; } int ans=a[5]+a[4]+a[3]; a[2]-=a[3]; a[1]-=a[4]; if(a[2]<0){ a[1]+=a[2]*2; } if(a[2]>0){ if(a[2]%2==1){ ans++; a[2]-=1; a[1]-=3; } ans+=a[2]/2; a[1]-=a[2]/2; } if(a[1]>0){ ans+=(a[1]-1)/5+1; } printf("%d\n",ans); }
ps:之前想的从后加,或从前加都不行
7
1 2 2 2 2 2 3