组团旅游
时间限制:1秒 内存限制:128M
题目描述
KDY学校组织了一次郊外旅游,去参观一下祖国的大好河山!
老师为了方便管理,给互相非常熟悉的同学组成了旅游小队,每个小队的同学数量不超过4个人。所有一个小组的同学都要乘坐同一辆车,但是同一个车不一定只有一个小组的成员。每辆车都最多可以乘坐4名同学。老师们单独乘坐一辆车一起前去。
输入描述
第一行输入一个正整数N,表示N个小组。N不超过100000
第二行输入每个小组成员数量。
输出描述
输出孩子们总共需要多少车辆
输入样例
5
1 2 4 3 3
输出样例
4
此题思路如下:
1.定义n和数组
2.sort排序数组
3.双指针
OK呀,上AC代码:
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int n,a[N];
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",a+i);
}
int cnt=0,i=1,j=n;
sort(a+1,a+n+1);
while(i<=j){
if(a[j]==4){
cnt++;
j--;
}
else if(a[i]+a[j]==4){
cnt++;
i++,j--;
}
else if(a[i]+a[j]<4){
a[j]+=a[i];
i++;
}
else{
j--;
cnt++;
}
}
printf("%d",cnt);
return 0;
}
(代码仅供参考,未经作者同意,禁止转载!)
调试:
提交:
OK呀,我们下期再见,拜拜!