您的位置:首页 > 编程语言 > Java开发

codeforces 158B(Taxi) Java

2017-06-22 20:45 323 查看
codeforces 上面的水题、记录一下。

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.Scanner;
/**
* 题意:有n个组,每个组有si人,1=<si<=4的,每辆taxi只能坐四个人,并且要求每个组的人必须坐在一起,求需要的taxi的最小辆数。
*/
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(new BufferedReader(new InputStreamReader(
System.in)));
PrintWriter out = new PrintWriter(System.out);
int[] arr = new int[5];//用来记录1,2,3,4 出现的次数
int inputCount;
int sum;               //记录总和
while (in.hasNext()) {
//每个 case 都需要将数组arr[]和总和sum清零
sum = 0;
Arrays.fill(arr, 0);

inputCount = in.nextInt();
while (inputCount-- != 0) {
int temp = in.nextInt();
arr[temp]++;//记录出现次数
}
//注意arr[1] 的不同情况
arr[1] = arr[1] > arr[3] ? arr[1] - arr[3] : 0;
//注意:arr[1] + arr[2] * 2 就是剩余人数为1的队伍人数+人数为2的队伍人数
//为什么要+3 ?因为当最后剩余人数不够4个的话,也是需要坐一辆车的。
sum += arr[4] + arr[3] + (arr[1] + arr[2] * 2 + 3) / 4;
out.println(sum);
}
out.flush();//必须有,当 in.hasNext() 为 false 的时候,把结果依次全部输出。
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: