51nod 1096 距离之和最小 思维题,求中位数
题目:
在一条直线上,与两个点距离之和最小的点,是怎样的点?
很容易想到,所求的点在这两个已知点的中间,因为两点之间距离最短。
在一条直线上,与三个点距离之和最小的点,是怎样的点?
由两个点的规律,我们可以想到,所求点一定夹在这些点中间。
例如 : -3 0 10
我们先试探一下
取点0: |0-3|+|0-0|+|0-10| = 3+0+10 = 13
取点-1: |-1-(-3)|+|-1-0|+|-1-10| = 2+1+11 = 3+1+10 = 14
取点1 : |1-(-3)|+|1-0|+|1-10| = 4+1+11 = 3+1+10 = 14
取点-3: |-3-(-3)|+|(-3)-0|+|-3-10| = 0+3+13 = 3+3+10 = 16
取点10: |10-(-3)|+|10-0|+|10-10| = 13+10+0 = 3+10+10 = 23
我们可以观察到取点0时结果最小,取其他点会多算一些部分。
我们可以想到取中间的点的时候,距离最小。
如果有偶数个点的话,取介于中间两个点的任何一个点即可。左闭右闭[]。
这个从两个点的时候就可以看出端倪。
如果还是不清楚的话,多画几个图就出来了。
代码:
#include <bits\stdc++.h>
using namespace std;
typedef long long ll; int n; int a[];
int main() {
int n;
cin >> n;
for(int i = ;i <= n; i++){
cin >> a[i];
}
sort(a+,a+n+); //如果n是奇数,index表示中间的点.
//如果是偶数,则表示中间两点中右边的那个点 。
int index = n/+; ll ans = ;
for(int i = ;i <= n; i++){
ans += abs(a[i]-a[index]);
}
cout << ans << endl;
return ;
}
51nod 1096 距离之和最小 思维题,求中位数的更多相关文章
- 51nod 1096 距离之和最小【中位数】
1096 距离之和最小 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 收藏 关注 X轴上有N个点,求X轴上一点使它到这N个点的距离之和最小,输出这个最小的距离 ...
- 51nod 1096 距离之和最小(水题日常)
基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 X轴上有N个点,求X轴上一点使它到这N个点的距离之和最小,输出这个最小的距离之和. Input 第1行:点的数量 ...
- 51nod 1096 距离之和最小 1108 距离之和最小 V2
[题解] 很显然在一条坐标轴上到各个点距离之和最小的点就是它们的中位数.怎么证明呢?我们假设现在找的某个点x左边有a个点,右边有b个点(a>b).我们把x向左移动d个单位,并保证x左边依然有a个 ...
- 51nod 1096 距离之和最小
求中位数,注意求中位数前排序.... #include <bits/stdc++.h> using namespace std; #define LL long long const in ...
- 51Nod 1108 距离之和最小 V2 1096 距离之和最小 中位数性质
1108 距离之和最小 V2基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 收藏 关注三维空间上有N个点, 求一个点使它到这N个点的曼哈顿距离之和最小,输出这个最小 ...
- 51Nod 1110 距离之和最小 V3 中位数 思维
基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 X轴上有N个点,每个点除了包括一个位置数据X[i],还包括一个权值W[i].点P到点P[i]的带权距离 = 实际距离 ...
- 【51NOD】1096 距离之和最小
[算法]数学 [题解] 其实就是求中位数,奇数个点就是最中间的点,偶数个点就是最中间两个点和它们之间的区域皆可(所以偶数不必取到两点正中央,取两点任意一点即可). 我们可以想象现在x轴上有n个点,我们 ...
- 51nod 1110 距离之和最小V3
X轴上有N个点,每个点除了包括一个位置数据X[i],还包括一个权值W[i].点P到点P[i]的带权距离 = 实际距离 * P[i]的权值.求X轴上一点使它到这N个点的带权距离之和最小,输出这个最小的带 ...
- Hdu4311 || 4312Meeting point-1/-2 n个点中任意选一个点使得其余点到该点曼哈顿距离之和最小
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission( ...
随机推荐
- C语言中以文本方式读写文件时换行符转换的注意事项
我们知道在UNIX下是没有回车符(\r)的,只有换行符(\n),而C语言诞生于UNIX(Linux即面向开源的UNIX,Mac OS也是UNIX发展而来的,而Windows是从MS-DOS发展而来,与 ...
- html 编码与解码
var HtmlUtil = { /*1.用浏览器内部转换器实现html转码*/ htmlEncode:function (html){ //1.首先动态创建一个容器标签元素,如DIV var tem ...
- 错误:com.android.builder.packaging.DuplicateFileException: Duplicate files copied
File2: C:\Users\guoxw\.gradle\caches\modules-2\files-2.1\org.jsoup\jsoup\1.10.3\b842f960942503cf1abb ...
- 【摘录】JAVA内存管理-JVM垃圾收集机制
很多公司都有自己的JVM实现,被Oracle收购的sun公司开发的JVM实现名为HotSpot.这一实现是我们最常用到的. 还有哪些JVM实现呢?比较有名的有Oracle之前收购的BEA公司(就是以前 ...
- 最新消息,CDRX7冰点价再返现,你知道么?
一年一度的七夕又到来了,这不很多的单身狗朋友们都已经自备好了狗粮,准备在家里宅上一天呢? 开个玩笑今天小编就为各位带来了 一个劲爆大消息... Deng/deng/deng/deng..就是备受万众瞩 ...
- Kattis - How Many Digits?
How Many Digits? Often times it is sufficient to know the rough size of a number, rather than its ex ...
- Qwiklab'实验-DynamoDB, Redshift, Elasticsearch'
title: AWS之Qwiklab subtitle: 4. Qwiklab'实验-Amazon DynamoDB, Amazon Redshift, Elasticsearch Service' ...
- js正则表达式注册页面表单验证
可以这样校验 <html> <head> <meta http-equiv="Content-Type" content="text/htm ...
- laravel 授权、用户验证
记录帖 一.授权 只允许管理员删除用户,给管理员授权时,可以这样做,首先: 创建UserPolicy类: php artisan make:policy UserPolicy 然后在UserPoli ...
- JavaScript 的对象继承方式,有几种写法?
JavaScript 的对象继承方式,有几种写法? 一.对象冒充 其原理如下:构造函数使用 this 关键字给所有属性和方法赋值(即采用类声明的构造函数方式).因为构造函数只是一个函数,所以可使 Pa ...