涉及知识点:
solution:
- (祝大家周末愉快)
- (因为每队人数小于等于5,所以根据不同的人数,可以划分为五种不同的队伍)
- (考虑贪心,尽可能的让每个车上都塞满5个人)
- (5人,一队一辆车)
- (4人,应该和1人凑)
- (3人,应该和2人凑,如果还有剩余3人,就要和两个1人凑)
- (2人,先两个2人和1人凑,如果2人的个数还有1个,那就要和三个1人凑)
- (1人,五个1人凑一车)
- (至于代码实现,可以根据情况讨论)
- (不过n不是很大,我们可以扔到while循环里)
std:
#include <bits/stdc++.h>
using namespace std;
#define ll long long
int b[10];
int main()
{
int n,x,y,ans = 0;
cin>>n;
for(int i=1;i<=n;i++)cin>>x,b[x]++;
while(n){
ans++;
int k = 5;
for(int i=5;i>=1;i--){
while(k >= i && b[i])
k -= i,b[i]--,n--;
}
}
cout<<ans<<endl;
return 0;
}