牛客网-吃葡萄

吃葡萄

http://www.nowcoder.com/questionTerminal/14c0359fb77a48319f0122ec175c9ada

题目描述
有三种葡萄,每种分别有\mathit a,b,ca,b,c颗。有三个人,第一个人只吃第\text 1,21,2种葡萄,第二个人只吃第\text 2,32,3种葡萄,第三个人只吃第\text 1,31,3种葡萄。
适当安排三个人使得吃完所有的葡萄,并且且三个人中吃的最多的那个人吃得尽量少。
输入描述:
第一行数字\mathit TT,表示数据组数。
接下来\mathit TT行,每行三个数\mathit a,b,ca,b,c
1 \leq a,b,c \leq 10^{18} , 1 \leq T \leq 101≤a,b,c≤10
18
,1≤T≤10
输出描述:
对于每组数据,输出一行一个数字表示三个人中吃的最多的那个人吃的数量。
示例1
输入
复制
2
1 2 3
1 2 6
输出
复制
2
3
示例2
输入
复制
1
12 13 11
输出
复制
12

解题思路
我们可以通过a\b\c的长度关系来确定是否可以三者平分---如果可以平分那么结果就是和分三分之后的向上取整:(sum+2)/3.
如果a+b比c的一半还少,那么只能让一个人吃完a和b,剩下两个平分c:(c+1)/2;
以后需要联系算法的输入和输出

import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);//输入
        while(in.hasNext()){
            int n=in.nextInt();
            if(n==0){
                System.out.println(0);
            }
            else{
                for(int i=0;i<n;i++){
                    long[] num=new long[3];
                    num[0]=in.nextLong();
                    num[1]=in.nextLong();
                    num[2]=in.nextLong();
                    Arrays.sort(num);
                    long sum=num[0]+num[1]+num[2];
                    if(num[0]+num[1]>num[2]){//可以构成三角形
                        System.out.println((sum+2)/3);
                    }
                    else if(2*(num[0]+num[1])<num[2]){//严重不平均
                        System.out.println((num[2]+1)/2);
                    }
                    else{
                        System.out.println((sum+2)/3);
                    }
                }
            }

        }
    }
}
全部评论

相关推荐

请看图片
投递叮咚买菜等公司10个岗位 >
点赞 评论 收藏
分享
10-07 23:57
已编辑
电子科技大学 Java
八街九陌:博士?客户端?开发?啊?
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务