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 ...
随机推荐
- tomcat7或8如何修改浏览器标题上的ICON小图标
替换tomcat根目录/webapps/ROOT下的favicon.ico文件,之后重启了服务器,可是还是显示那只猫的图标. 如果不能显示,请清除浏览器的缓存
- 七天学会ASP.NET MVC (四)——Layout页面使用和用户角色管理 (代码下载)
中文翻译链接: http://www.cnblogs.com/powertoolsteam/p/MVC_four.html 360云盘: https://yunpan.cn/cYuEeLtXUvrgC ...
- QT LNK2019 无法解析的外部符号
Qt新手,编译时遇到上述问题,但检查代码没有问题,代码很简单. 最后在网上搜到是因为用了新建类向导,导致moc文件没有更新,但是重新构建,清理构建还是不行,最后将代码目录下所有的编译的文件全部删除才暂 ...
- React Route
有幸你能看来我的这篇文章,这篇文章是继React后面写的Reactroute,所以你需要看看我前面整理的React笔记再来看Reactroute可能更容易 All the work we've don ...
- 去除右键的opendgl
Windows Registry Editor Version 5.00[-HKEY_CLASSES_ROOT\Unknown\shell\opendlg][-HKEY_CLASSES_ROOT\Un ...
- openstack私有云布署实践【14.1 登录页dashboard-controller(科兴环境)】
2台kxcontroller安装组件 # yum install openstack-dashboard -y 修改一样的配置 vi /etc/openstack-dashboard/local_ ...
- Android View的事件分发
如果接触android开发时间足够长的话,或多或少都会遇到各种各样事件冲突的问题,要想解决这类问题,对深入理解事件分发机制是很有必要的,接下来几天都会尽自己所能尽可能将这方面讲清楚. View的事件 ...
- mongodb部署单节点(一)
部署包:mongodb-linux-x86_64-rhel55-3.0.2.tgz(百度云盘下载地址:http://pan.baidu.com/s/1jIQAGlw 密码:l7pf) 第一步:上传该文 ...
- iOS开发下架在AppStore中销售的app
1.登陆开发者账号 2.选择itunes connect 选择我的app 3.选择要下架的app 4.价格与销售范围 5.销售范围 6.点击存储 //如果想要重新在AppStore中进行销售只需要选择 ...
- Spring入门学习(二)三种实例化bean的方法
前面的哪一种就是通过构造函数来实例化对象 下面我们可能用到工厂方法来视力话对象,这样我们的配置文件又该怎么配置呢 <bean name="service2" class=&q ...