SenseTime Ace Coder Challenge 暨 商汤在线编程挑战赛 A. 地铁站

//其实比赛的时候就想到这方法了,但看到数据太吓人,就没写
//看着标程,实际上就是这方法,太坑爹……
/*
假设值为k,对于图中任意两点,圆1半径k/t1,圆2半径k/t2
圆1与圆2的交集为可以设置地铁站的位置
两圆有交集等价为:两半径之和大于等于两点的距离,对于任意两点,能求出最小k值
存在地铁站 等效为 对于图中任意两点画出的两个圆都有交集
*/

 1 //Æäʵ±ÈÈüµÄʱºò¾ÍÏëµ½Õâ·½·¨ÁË£¬µ«¿´µ½Êý¾ÝÌ«ÏÅÈË£¬¾Íûд
 2 //¿´×űê³Ì£¬Êµ¼ÊÉϾÍÊÇÕâ·½·¨£¬Ì«¿Óµù¡­¡­ 
 3 /*
 4     ¼ÙÉèֵΪk£¬¶ÔÓÚͼÖÐÈÎÒâÁ½µã£¬Ô²1°ë¾¶k/t1£¬Ô²2°ë¾¶k/t2
 5     Ô²1ÓëÔ²2µÄ½»¼¯Îª¿ÉÒÔÉèÖõØÌúÕ¾µÄλÖÃ
 6     Á½Ô²Óн»¼¯µÈ¼ÛΪ£ºÁ½°ë¾¶Ö®ºÍ´óÓÚµÈÓÚÁ½µãµÄ¾àÀ룬¶ÔÓÚÈÎÒâÁ½µã£¬ÄÜÇó³ö×îСkÖµ 
 7     ´æÔÚµØÌúÕ¾ µÈЧΪ ¶ÔÓÚͼÖÐÈÎÒâÁ½µã»­³öµÄÁ½¸öÔ²¶¼Óн»¼¯
 8 */ 
 9 #include <cstdio>
10 #include <cstdlib>
11 #include <cstring>
12 #include <cmath>
13 #include <list>
14 #include <stack>
15 #include <vector>
16 #include <set>
17 #include <map>
18 #include <queue>
19 #include <algorithm>
20 #include <iostream>
21 using namespace std;
22 
23 double x[100005],y[100005],t[100005];
24 
25 int main()
26 {
27     long n,i,j;
28     double r;
29     scanf("%ld",&n);
30     for (i=1;i<=n;i++)
31         scanf("%lf%lf%lf",&x[i],&x[i],&t[i]);
32     for (i=1;i<n;i++)
33         for (j=i+1;j<=n;j++)
34             r=max(r,( (x[i]-x[j])*(x[i]-x[j]) + (y[i]-y[j])*(y[i]-y[j]) )/t[i]);
35     printf("%.2lf",r);
36     return 0;
37 }
原文地址:https://www.cnblogs.com/cmyg/p/8766562.html