MSWORLD
发布日期:2021-05-07 06:54:29 浏览次数:25 分类:精选文章

本文共 1396 字,大约阅读时间需要 4 分钟。

M S W O R L D MSWORLD MSWORLD

题目链接:

题目

B e s s i e Bessie Bessie , F a r m e r   J o h n Farmer\ John Farmer John 的优选牛,刚刚获得了一个牛科动物选美比赛的冠军!并得到了“世界奶牛小姐”的头衔。因此, B e s s i e Bessie Bessie将进行一场环球农场旅行,共 N N N个农场,依次传播农场主和奶牛们之间的亲善友好。为了简单起见,世界可以看作一个二维平面,每座农场的位置用二维坐标 ( x , y ) (x,y) (x,y)表示, x x x, y y y − 10 , 0000 -10,0000 10,0000 10 , 0000 10,0000 10,0000的整数。没有两座农场处于同一个位置上。

哪怕 B e s s i e Bessie Bessie在两个农场间都是走的直线,在某些农场间的距离还是很远,所以她想随身携带一只装满了干草的箱子,这样她在每一段行程都有充足的食物。因为 B e s s i e Bessie Bessie在她每到达一个农场后都要重新装满她的箱子,她想弄清楚她可能要走的最大距离,以此来决定它必须携带多大的箱子。帮帮 B e s s i e Bessie Bessie吧!你只要求出任意两点距离的最大值就可以了。

输入

第一行,一个整数, N N N。第 2 ~ N + 1 2~N+1 2N+1行,两个整数 X X X Y Y Y,描述了农场的坐标。

输出

一个整数,最大距离的平方。

样例输入

40 00 11 11 0

样例输出

2

样例解释

农场 1 ( 0 , 0 ) 1(0,0) 10,0和农场 3 ( 1 , 1 ) 3(1,1) 31,1的距离为 2 2 2的开方。

数据范围

1 < = N < = 50 , 000 1<=N<=50,000 1<=N<=50,000

思路

直接 N 2 N^2 N2枚举每两个农场,勾股求出距离,找出最长的那个,输出就可以了。

(是的, N 2 N^2 N2可以过)
注意:有一个很神奇的情况就是如果只有一个农场,要输出 − 1 -1 1

代码

#include
#define ll long long#define max(x, y) (x) > (y) ? (x) : (y)using namespace std;ll n, a[50001], b[50001], ans;int main() { scanf("%lld", &n);//读入 for (ll i = 1; i <= n; i++) { scanf("%lld %lld", &a[i], &b[i]);//读入 for (ll j = 1; j < i; j++) ans = max(ans, (a[i] - a[j]) * (a[i] - a[j]) + (b[i] - b[j]) * (b[i] - b[j]));//勾股求距离,并记录最大的 } if (n == 1) printf("-1");//只有一个农场时要输出-1 else printf("%lld", ans);//输出最长的距离 return 0;}
上一篇:Java的数据类型及作为方法参数时的区别
下一篇:ANT-Antisymmetry

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2025年03月18日 02时27分19秒