zoukankan      html  css  js  c++  java
  • 分苹果(网易)

    题目描述

    n 只奶牛坐在一排,每个奶牛拥有 ai 个苹果,现在你要在它们之间转移苹果,使得最后所有奶牛拥有的苹果数都相同,每一次,你只能从一只奶牛身上拿走恰好两个苹果到另一个奶牛上,问最少需要移动多少次可以平分苹果,如果方案不存在输出 -1。

    输入描述:

    每个输入包含一个测试用例。每个测试用例的第一行包含一个整数 n(1 <= n <= 100),接下来的一行包含 n 个整数 ai(1 <= ai <= 100)。

    输出描述:

    输出一行表示最少需要移动多少次可以平分苹果,如果方案不存在则输出 -1。
    示例1

    输入

    4
    7 15 9 5

    输出

    3

    分析:1、最后所有奶牛得到的苹果相同,所以就是苹果总数除以奶牛数,最后大家都是平均苹果数,如果有余数,就输出-1;2、奶牛间移动苹果是两个移一次,所以当有奶牛的苹果数与平均苹果数的差值不是2的整数倍,那么说明无法移动成功,输出-1,如果差值都是2的整数倍,就计算差值大于0的(也就是大于平均苹果数的)那些差值的和,最后除以2就行。

    import java.util.*;
    public class Main{
        public static void main(String[] args){
            Scanner sc=new Scanner(System.in);
            while(sc.hasNext()){
                int n=sc.nextInt();
                int[] a=new int[n];
                int total=0;//总苹果
                for(int i=0;i<n;i++){
                    a[i]=sc.nextInt();
                    total+=a[i];
                }
                if(total%n!=0){
                    System.out.println(-1);
                    break;
                }
                int ev=total/n;//平均每个奶牛多少苹果
                /*找到大于ev的和小于ev的,将2看成一个整体,只要一个数大于或小于ev的差不是2的整数倍,就输出-1.。
                如果都是2的整数倍,那么只需找出所有大于ev的数值和,除以2 就行*/
                int t=0;
                boolean flag=false;
                for(int i=0;i<n;i++){
                    int cha=a[i]-ev;
                    if(cha%2!=0){
                        flag=true;
                        break;
                    }
                    if(cha>0) t+=cha;
                }
                
                if(flag){
                    System.out.println(-1);
                }else{
                    System.out.println(t/2);
                }
            }
        }
    }
    
    
  • 相关阅读:
    Apache Ant 1.9.1 版发布
    Apache Subversion 1.8.0rc2 发布
    GNU Gatekeeper 3.3 发布,网关守护管理
    Jekyll 1.0 发布,Ruby 的静态网站生成器
    R语言 3.0.1 源码已经提交到 Github
    SymmetricDS 3.4.0 发布,数据同步和复制
    beego 0.6.0 版本发布,Go 应用框架
    Doxygen 1.8.4 发布,文档生成工具
    SunshineCRM 20130518发布,附带更新说明
    Semplice Linux 4 发布,轻量级发行版
  • 原文地址:https://www.cnblogs.com/xiaolovewei/p/8260478.html
Copyright © 2011-2022 走看看