ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

货仓选址

2021-05-30 16:03:01  阅读:136  来源: 互联网

标签:知识点 货仓 Scanner int 运算符 new 选址


题目描述

在一条数轴上有 N 家商店,它们的坐标分别为 A1~AN。

现在需要在数轴上建立一家货仓,每天清晨,从货仓到每家商店都要运送一车商品。

为了提高效率,求把货仓建在何处,可以使得货仓到每家商店的距离之和最小。

输入格式

第一行输入整数N。

第二行N个整数A1~AN。

输出格式

输出一个整数,表示距离之和的最小值。

数据范围

1≤N≤100000
0≤Ai≤40000

输入样例:

4
6 2 9 1

    1
    2

输入样例:

12

在数比较小 的时候还可以正常运行,但当数变的打的时候 不能运行。而且很多东西都十分复杂,写的不够精简。在看了别人的代码后,学习到了很多新的知识点。

知识点1:Arrays.sort(a)可以将数组排序,除此之外,还有冒泡排序,选择排序等等。而我复杂的将一个数组排序到另外一个数组,可能期间还会出现问题。

知识点2

<<,>>,>>>为java中的移位运算符。

    1. <<表示左移运算符
      例如8<<2,表示将8向左移2位,结果为32。低位补0。
      二进制演算:
      8的二进制:1 0 0 0
      向左移动两位结果为1 0 0 0 0 0,换算成十进制即为32,也可以简单的理解为,左移就是将数变大,相当于8*2^2=32。
      左移运算符的运算规律:将左边的数按照右边的数往左移动几位。
    2. ”>>”表示右移运算符
      例如 8>>2,表示将8向右移动2位,结果为2。高位补0。
      二进制演算:
      8的二进制:1 0 0 0
      向右移动两位:0 0 1 0即为2,也可以简单的理解为将数向右移位就是将数变小,相当于8除以2^2=2。
      右移运算符运算规律:将左边的数按照右边的数右移几位。

知识点3:for(元素类型t 元素变量x : 遍历对象obj);

知识点4:math.abs()计算括号中的绝对值。

import java.util.Scanner;
public class Main{
	
	public static void main(String[] args){
		Scanner a=new Scanner(System.in);
		int N=a.nextInt();
		int[] num=new int[N];
		int[] num2=new int[N];
		for(int i=0;i<N;i++) {
			num[i]=a.nextInt();
		}
		int m=-1;int min =40000;
		for(int w=0;w<N;w++) {
			
				for (int s=0;s<N;s++) {
				if(m<num[s]&&num[s]<=min) {
					min=num[s];	
				}
			}
			num2[w]=min;
			m=min;
			min=40000;
		}
		int sum=0;
		for(int v=1;v<=N/2;v++) {
			int sum1=num2[N-v]-num2[v-1];
			sum=sum+sum1;
			
		}
		System.out.println(sum);
	}
}	

 

import java.util.Arrays;
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner cin = new Scanner(System.in);
        int n = cin.nextInt();
        int[] a = new int[n];
        for (int i = 0; i < n; ++ i) {
            a[i] = cin.nextInt();
        }
        Arrays.sort(a);
        int ans = 0;
        int pos = a[n >> 1];
        for (int x : a) {
            ans += Math.abs(pos - x);
        }
        System.out.println(ans);
    }
}
————————————————
版权声明:本文为CSDN博主「小菜菜不会写代码」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xiaoxiao66668/article/details/112591714

 

标签:知识点,货仓,Scanner,int,运算符,new,选址
来源: https://www.cnblogs.com/6219chen/p/14828145.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有