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

2023-03-18,,

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

 //Æäʵ±ÈÈüµÄʱºò¾ÍÏëµ½Õâ·½·¨ÁË£¬µ«¿´µ½Êý¾ÝÌ«ÏÅÈË£¬¾Íûд
//¿´×űê³Ì£¬Êµ¼ÊÉϾÍÊÇÕâ·½·¨£¬Ì«¿Óµù¡­¡­
/*
¼ÙÉèֵΪk£¬¶ÔÓÚͼÖÐÈÎÒâÁ½µã£¬Ô²1°ë¾¶k/t1£¬Ô²2°ë¾¶k/t2
Ô²1ÓëÔ²2µÄ½»¼¯Îª¿ÉÒÔÉèÖõØÌúÕ¾µÄλÖÃ
Á½Ô²Óн»¼¯µÈ¼ÛΪ£ºÁ½°ë¾¶Ö®ºÍ´óÓÚµÈÓÚÁ½µãµÄ¾àÀ룬¶ÔÓÚÈÎÒâÁ½µã£¬ÄÜÇó³ö×îСkÖµ
´æÔÚµØÌúÕ¾ µÈЧΪ ¶ÔÓÚͼÖÐÈÎÒâÁ½µã»­³öµÄÁ½¸öÔ²¶¼Óн»¼¯
*/
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <list>
#include <stack>
#include <vector>
#include <set>
#include <map>
#include <queue>
#include <algorithm>
#include <iostream>
using namespace std; double x[],y[],t[]; int main()
{
long n,i,j;
double r;
scanf("%ld",&n);
for (i=;i<=n;i++)
scanf("%lf%lf%lf",&x[i],&x[i],&t[i]);
for (i=;i<n;i++)
for (j=i+;j<=n;j++)
r=max(r,( (x[i]-x[j])*(x[i]-x[j]) + (y[i]-y[j])*(y[i]-y[j]) )/t[i]);
printf("%.2lf",r);
return ;
}

SenseTime Ace Coder Challenge 暨 商汤在线编程挑战赛 A. 地铁站的相关教程结束。

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

下载本文的Word格式文档,以方便收藏与打印。