Codeforces Round #375 (Div. 2)A. The New Year: Mee
A. The New Year: Meeting Friends
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output
There are three friend living on the straight line Ox in Lineland. The first friend lives at the point x1, the second friend lives at the point x2, and the third friend lives at the point x3. They plan to celebrate the New Year together, so they need to meet at one point. What is the minimum total distance they have to travel in order to meet at some point and celebrate the New Year?
It's guaranteed that the optimal answer is always integer.
Input
The first line of the input contains three distinct integers x1, x2 and x3 (1 ≤ x1, x2, x3 ≤ 100) — the coordinates of the houses of the first, the second and the third friends respectively.
Output
Print one integer — the minimum total distance the friends need to travel in order to meet together.
Examples
Input
7 1 4
Output
6
Input
30 20 10
Output
20
Note
In the first sample, friends should meet at the point 4. Thus, the first friend has to travel the distance of 3 (from the point 7 to the point 4), the second friend also has to travel the distance of 3 (from the point 1 to the point 4), while the third friend should not go anywhere because he lives at the point 4.
____________________
题意:给定a,b,c三个点,在数轴上找出一点p使他们距离之和sum最小,并输出最小的距离之和sum。
一开始直觉感觉是三个数平均数,交上去Wrong Answer on test 3 (test3是 1 4 100 ) 。
于是写了个暴力过了(毕竟答案肯定是整数,数据范围又小的可怜):
#include<iostream>
#include<cmath>
//#include<cstdlib>
using namespace std ; int main()
{
int a,b,c;
int min = 101 ;
cin >> a >> b >> c ;
int temp = 0 ;
for ( int i = 1 ; i <= 100 ; i++ )
{
temp = abs( a - i ) + abs ( b - i ) + abs( c - i );
if(temp < min ) min = temp ;
}
cout << min << endl ;
return 0 ; }
————
但我认为该题有数学方法并且可以推广,不需要写这么不优雅的暴力。
将该题推广如下:
在数轴上给定n个点,找一点p使p到各点距离之和最小。
——
经过一番讨论,发现p是n个点的中位数。
修改代码如下:
#include<iostream>
#include<cmath> using namespace std ;
void swap( int &a , int &b)
{
int temp ;
temp = a ;
a = b ;
b = temp ;
}
int main()
{
int a,b,c;
cin >> a >> b >> c ;
if( a > b ) swap(a,b);
if(a > c ) swap(a,c);
if( b>c) swap(b,c);
cout << abs(a-b)+abs(c-b) << endl ; return 0 ; }
![]()
————————
对于n个点的证明:
假设p点不是那个点的中位数,则p点左边有m个数,右边有n个数(m≠n) 。
那么如果将p点向左移动d(但没有使p两边数的个数发生改变),则左边距离减少md,右边增加距离nd。右边移动同理。
因此,当p点左右两边数的个数不一样的时候,不是最优解。
所以p是中位数。(这里貌似不太严谨啊)
如果n是奇数,则p = (n + 1 ) /2
如果n是偶数,则p是在 ( n/2 , n/2 + 1 ) 上任意一点。
Codeforces Round #375 (Div. 2)A. The New Year: Mee的更多相关文章
- Codeforces Round #375 (Div. 2) - D
题目链接:http://codeforces.com/contest/723/problem/D 题意:给定n*m小大的字符矩阵.'*'表示陆地,'.'表示水域.然后湖的定义是:如果水域完全被陆地包围 ...
- Codeforces Round #375 (Div. 2) - C
题目链接:http://codeforces.com/contest/723/problem/C 题意:给定长度为n的一个序列.还有一个m.现在可以改变序列的一些数.使得序列里面数字[1,m]出现次数 ...
- Codeforces Round #375 (Div. 2) - B
题目链接:http://codeforces.com/contest/723/problem/B 题意:给定一个字符串.只包含_,大小写字母,左右括号(保证不会出现括号里面套括号的情况),_分隔开单词 ...
- Codeforces Round #375 (Div. 2) - A
题目链接:http://codeforces.com/contest/723/problem/A 题意:在一维坐标下有3个人(坐标点).他们想选一个点使得他们3个到这个点的距离之和最小. 思路:水题. ...
- Codeforces Round #375 (Div. 2) F. st-Spanning Tree 生成树
F. st-Spanning Tree 题目连接: http://codeforces.com/contest/723/problem/F Description You are given an u ...
- Codeforces Round #375 (Div. 2) E. One-Way Reform 欧拉路径
E. One-Way Reform 题目连接: http://codeforces.com/contest/723/problem/E Description There are n cities a ...
- Codeforces Round #375 (Div. 2) D. Lakes in Berland 贪心
D. Lakes in Berland 题目连接: http://codeforces.com/contest/723/problem/D Description The map of Berland ...
- Codeforces Round #375 (Div. 2) B. Text Document Analysis 模拟
B. Text Document Analysis 题目连接: http://codeforces.com/contest/723/problem/B Description Modern text ...
- Codeforces Round #375 (Div. 2) A. The New Year: Meeting Friends 水题
A. The New Year: Meeting Friends 题目连接: http://codeforces.com/contest/723/problem/A Description There ...
随机推荐
- Android服务
开启服务 (startservice) 服务一旦开启与调用者没有任何的关系 , 调用着的activity 即便是退出了 也不会影响 后台的service的运行. 在activity里面 不能去调用服务 ...
- C#模板打印功能-模板为WPS或Excel
//---WPS----- using EtApp = ET; using System.Reflection; using System.Runtime.InteropServices; using ...
- removeObjectAtIndex
CGFloat lableW = (baseViewWidth - 2)/3;// dcj20150724,减2是为了解决字体模糊的问题,因为设置了边框. 原因是下面引起的 titleview.lay ...
- 七天学会ASP.NET MVC (四)——Layout页面使用和用户角色管理 (代码下载)
中文翻译链接: http://www.cnblogs.com/powertoolsteam/p/MVC_four.html 360云盘: https://yunpan.cn/cYuEeLtXUvrgC ...
- jmeter下载及安装配置
本文是在win7环境下安装使用jmeter,jmeter可以运行在多平台上Windows和Linux. 前提:使用jmeter工具之前需要安装java.并配置好java的环境变量.(备注:java下载 ...
- HSDFS fs命令
fs命令 -help [cmd] //显示命令的帮助信息 -ls(r) <path> //显示当前目录下所有文件 -du(s) <path> //显示目录中所有文件大小 ...
- token 小记
最近了解下基于 Token 的身份验证,跟大伙分享下.很多大型网站也都在用,比如 Facebook,Twitter,Google+,Github 等等,比起传统的身份验证方法,Token 扩展性更强, ...
- WebApi Help Pages
如何新建Help Pages在此不多复述,网上很多: https://www.asp.net/web-api/overview/getting-started-with-aspnet-web-api/ ...
- hadoop 常用配置项【转】
hadoop 常用配置项[转] core-site.xml name value Description fs.default.name hdfs://hadoopmaster:9000 定义 ...
- Windows下WordPress搭建博客过程
搭建环境:Win7 + XAMPP5.5 + wordpress4.5.1 官网下载安装包,解压,拷贝到网站根目录(D:\IT\XAMPP5.5\htdocs\),重命名为blog(随意) 创建数据库 ...