题解 | #吃葡萄#
吃葡萄
http://www.nowcoder.com/questionTerminal/14c0359fb77a48319f0122ec175c9ada
java解法
如果数量最少的两种葡萄之和小于葡萄总数的的三分之一(假设a<b<c, a+b < a+b+c/3),也就是说只让一个人负责吃数量最少的葡萄都绰绰有余,那么其他的两个人都被分配到吃最多的那种萄才能尽可能让每人都尽可能吃得多,这种情况吃的最多也就是负责吃c的两个人,数量就是c/2向上取整;
否则,三种葡萄可以完全均分给三个人(不需要管怎么分,把三条边拼成一个圆,肯定可以平分三份),吃的最多的个数就是总和除以3向上取整。
public class Main{
public static void main(String[] args){
int n = 0;
long[] nums = new long[3];
Scanner scan = new Scanner(System.in);
n = scan.nextInt();
for (int i = 0; i < n; i++) {
Long sum = 0L;
for (int j = 0; j < 3; j++) {
nums[j] = scan.nextLong();
sum += nums[j];
}
Arrays.sort(nums);
if (nums[0] + nums[1] < sum/3) {
System.out.println((nums[2] + 1)/ 2);
} else {
System.out.println((sum + 2)/ 3);
}
}
}
}