B. Taxi
来源:互联网 发布:校园不良网络借贷案例 编辑:程序博客网 时间:2024/05/16 19:28
After the lessons n groups of schoolchildren went outside and decided to visit Polycarpus to celebrate his birthday. We know that the i-th group consists of si friends (1 ≤ si ≤ 4), and they want to go to Polycarpus together. They decided to get there by taxi. Each car can carry at most four passengers. What minimum number of cars will the children need if all members of each group should ride in the same taxi (but one taxi can take more than one group)?
The first line contains integer n (1 ≤ n ≤ 105) — the number of groups of schoolchildren. The second line contains a sequence of integers s1, s2, ..., sn (1 ≤ si ≤ 4). The integers are separated by a space, si is the number of children in the i-th group.
Print the single number — the minimum number of taxis necessary to drive all children to Polycarpus.
51 2 4 3 3
4
82 3 4 4 2 1 3 1
5
In the first test we can sort the children into four cars like this:
- the third group (consisting of four children),
- the fourth group (consisting of three children),
- the fifth group (consisting of three children),
- the first and the second group (consisting of one and two children, correspondingly).
There are other ways to sort the groups into four cars.
解题思路:这道题贪心,先统计出1,2,3,4的个数,然后开始判断。4是一辆车,两个2是一辆车,1和3是一辆车。最后判断剩下的2和剩下的3,这时没法合并,判断剩下的2和剩下的1,这时可能合并。
#include <iostream>#include<cstdio>#include<algorithm>using namespace std;int main(){int number,i;int num1,num2,num3,num4;int a[100002];int sum;num1=0;num2=0;num3=0;num4=0;sum=0;scanf("%d",&number);for(i=0;i<number;i++){scanf("%d",&a[i]);if(a[i]==4){num4++;}else if(a[i]==1){num1++;}else if(a[i]==2){num2++;}else{num3++;}}sum+=num4;sum+=num2/2;if(num3>=num1){sum+=num1;num3-=num1;sum+=num3;sum+=num2%2;}else{sum+=num3;num1-=num3;if(num2%2==0){sum+=num1/4;if(num1%4!=0){sum++;}}else{sum+=num1/4;if(num1%4<=2){sum++;}else{sum+=2;}}}printf("%d\n",sum);return 0;}
- B. Taxi
- CF - 158B - Taxi
- CodeForces 158B taxi
- 【codeforces】B. Taxi
- 158B - Taxi
- 158B - Taxi
- CodeForces 158B Taxi
- CF 158B taxi
- 158B Taxi 贪心
- codeforces 158B Taxi
- Codeforces B. Taxi 算法题解
- CodeForces 158 B. Taxi(模拟)
- codeforces-158B-Taxi题解
- Problem--158B--Codeforces--Taxi
- Taxi
- Taxi
- codeforces 158B Taxi(贪心小水题)
- codeforces 158B Taxi (贪心)
- eclipse中的svn快速上手
- windows phone 和 VS2012 的混合编程
- 官方基本介绍
- finally能否改变返回数据的值?
- [学生活动] 2012西南大学&CSDN高校俱乐部秋季巡讲 [大三TJB_708]
- B. Taxi
- KDE下安装Fcitx
- 如何发布webservice
- android 屏幕适配问题
- 《大数据时代》摘抄,第一部分大数据时代的思维变革(1、不是随机样本,而是全体数据)
- 大数据分析(Big Data OLAP)引擎Dremel, Tenzing 以及Impala
- c/c++的typedef在c#中的等效处理办法
- WideCharToMultiByte和MultiByteToWideChar函数
- 深入学习Windows动态链接库