题解 | #吃葡萄#

吃葡萄

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);
            }
        }        
    }
}

全部评论

相关推荐

10-30 23:23
已编辑
中山大学 Web前端
去B座二楼砸水泥地:这无论是个人素质还是专业素质都👇拉满了吧
点赞 评论 收藏
分享
11-15 17:19
湖南大学 Java
成果成果成果果:这是哪个公司的hr,这么离谱吗,我没见过用性别卡技术岗的,身边女性同学拿大厂offer的比比皆是
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务