您现在的位置是:主页 > news > 做移动网站优化排名首页/商丘seo推广
做移动网站优化排名首页/商丘seo推广
admin2025/5/5 12:49:53【news】
简介做移动网站优化排名首页,商丘seo推广,怀化订水网站,做雨棚的网站import java.io.IOException;import java.io.BufferedReader;import java.io.InputStreamReader;public class Main {/***这个题目是求解最少的移动次数。细节上考虑,是要将一个奶牛身上的苹果转移到另一个奶牛身上,但是实际上求最小,并不需要…
import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
/**
*这个题目是求解最少的移动次数。细节上考虑,是要将一个奶牛身上的苹果转移到另一个奶牛身上,但是实际上求最小,并不需要一个一个的转移。
*奶牛拥有的少于平均多少个,除以二就是最少需要的次数。遍历所有的奶牛,计算少于平均的奶牛需要多少个就可以了,如果想省略判断是否少于平均,
*也是可以的,直接用奶牛拥有的苹果个数减去平均值,取绝对值除2就可以了,但是由于多的也计算,少的也计算,那么最后要将总的次数除以二。
*注意细节问题:
*一:如果总苹果sum( = a1 + a2 + .. + an)不能整除奶牛个数n,则无法平均,无解
*二:每次只能从一个奶牛上恰好拿2个到另一个奶牛,这个和数字运算有关,奇数和偶数减2仍然保持自身奇偶性,
*但是平均数只可能是奇数或者偶数中的一种,所以输入的每个数必须和平均数保持一致奇偶性,否则无解。
*/
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
boolean haveOdd = false;
boolean haveEven = false;
int sum = 0;
int avg = 0;
int numNo = Integer.parseInt(br.readLine().trim());
int[] arrNum = new int[numNo];
String[] arrInput = br.readLine().trim().split(" ");
int step = 0;
for (int i=0; i
arrNum[i] = Integer.parseInt(arrInput[i]);
sum += arrNum[i];
if (arrNum[i] % 2 == 0) {
haveEven = true;
} else {
haveOdd = true;
}
}
if (sum % numNo != 0) {//不能整除
System.out.println(-1);
return;
}
avg = sum /numNo;
if (((avg % 2 == 0) && haveOdd == true) || ((avg % 2 == 1) && haveEven == true)) {//判断每个数和avg的奇偶性是否一致
System.out.println(-1);
return;
}
for (int i=0; i
if (arrNum[i] < avg) {
step += (avg - arrNum[i]) >> 1;//除以2
}
}
System.out.println(step);
}
}