dtcms 面试 IntelliJ IDEA LVS typeAliases wpf outlook triggers pygame vue开发文档 h5表格模板 python断言assert实例 python中的def python图形界面开发 java简介 java8的新特性 win7loader 图解设计模式 离散数学pdf python的用途 vfloppy collect 模拟按键 视频后期处理软件 pr调整图层 jdk9下载 php小数点保留2位 光头强换肤助手 苹果手机不弹出信任 vue定时器 js给标签添加属性 jquery手册 金水疑云 cad2008汉化包 骰子表情包 打印机怎么打印照片 ps怎么做漂亮艺术字 ipad清理内存 ps镂空字体怎么做 firework软件
当前位置: 首页 > 学习教程  > 编程语言

快递中转点——高级

2020/12/28 19:23:24 文章标签:

Description 在浙师大的中轴线上,分布着许多公寓,而宅男宅女们每天会产生数千,甚至上万笔快递订单。想锻炼一下经商能力的CC,想到了代理一个快递中转点,那每天一定能赚不少钱。每笔订单必须当天送达寝室。 为了简化问…

Description

在浙师大的中轴线上,分布着许多公寓,而宅男宅女们每天会产生数千,甚至上万笔快递订单。想锻炼一下经商能力的CC,想到了代理一个快递中转点,那每天一定能赚不少钱。每笔订单必须当天送达寝室。
为了简化问题,CC认为所有寝室都在一条坐标轴上,并且每个寝室都在轴上有一个坐标,每天他都会把所有快递放在一个中转点上,然后开始派送。

可是为了World Final的大业,CC每天还要花大量的时间在实验室做题,因此,现在CC想要知道,他的快递中转站开在什么位置(位置可以是轴上任意点,也可以和寝室位置重合),能使得送完所有订单所走的路程最短。那么就请你和CC一起解决一下这个小问题吧。

Input

测试数据第一行一个整数N(1<=N<=1000)表示在轴上共有N个寝室需要送达快递。
接下来N行,每行一个整数ai(0<=ai<=1,000,000)表示每个寝室的位置。

Output

包含两个整数,分别是你确定的中转站位置,以及中转站到所有寝室的距离之和。

Sample Input

5
0
20
40
10
30

1
20
Sample Output

20 60

20 0

思路:
就是一道数学题,求解一个在数轴上,什么点到各点的距离最小。
把每个点都放在数轴上,就需要先排序。
中心的位置到各个位置之距离和最小,中心位置就是a[n/2],如果n是偶数,把中转站放在a[n/2-1]到a[n/2]之间都是一样的,所以直接放在寝室那就好了
(有点常识也知道,中转站什么的要在中心的位置)

#include<stdio.h>
int main()
{
    int n,i,j,k,t;
    long long int  sum=0;
    long long int a[999],b[999];
    long long int m;
    while(scanf("%d",&n)!=EOF){
    for(i=0;i<n;i++)
    {
        scanf("%lld",&a[i]);
    }
for(i=0;i<n-1;i++){//排序
	    for(j=0;j<n-i-1;j++){
	    	if(a[j]>a[j+1])
	    	{
	    		t=a[j];
	    		a[j]=a[j+1];
	    		a[j+1]=t;
	    	}
	    } 
	} 
        m=a[n/2];//中心位置
        for(i=0;i<n;i++)//加距离
        {
            if(m-a[i]>=0)
            {
                sum+=(m-a[i]);
            }
            else
            {
                sum+=(a[i]-m);
            }
        }
    printf("%lld %lld\n\n",m,sum);
}
    return 0;
}

本文链接: http://www.dtmao.cc/news_show_550229.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?