• 三分 POJ 2420 A Star not a Tree?


    题目传送门

     1 /*
     2     题意:求费马点
     3     三分:对x轴和y轴求极值,使到每个点的距离和最小
     4 */
     5 #include <cstdio>
     6 #include <algorithm>
     7 #include <cstring>
     8 #include <cmath>
     9 
    10 const int MAXN = 1e2 + 10;
    11 const int INF = 0x3f3f3f3f;
    12 double x[MAXN], y[MAXN];
    13 int n;
    14 
    15 double sum(double x1, double y1)    {
    16     double res = 0;
    17     for (int i=1; i<=n; ++i)    {
    18         res += sqrt ((x1 - x[i]) * (x1 - x[i]) + (y1 - y[i]) * (y1 - y[i]));
    19     }
    20     return res;
    21 }
    22 
    23 double cal(double x1)   {
    24     int l = 0.0, r = 10000.0;
    25     for (int i=1; i<=100; ++i)  {
    26         double lmid = (l + r) / 2;
    27         double rmid = (lmid + r) / 2;
    28         if (sum (x1, lmid) < sum (x1, rmid))    r = rmid;
    29         else    l = lmid;
    30     }
    31     return sum (x1, l);
    32 }
    33 
    34 int main(void)  {       //POJ 2420 A Star not a Tree?
    35     //freopen ("POJ_2420.in", "r", stdin);
    36 
    37     while (scanf ("%d", &n) == 1)   {
    38         for (int i=1; i<=n; ++i)    {
    39             scanf ("%lf%lf", &x[i], &y[i]);
    40         }
    41 
    42         double l = 0.0, r = 10000.0;
    43         for (int i=1; i<=100; ++i)  {
    44             double lmid = (l + r) / 2;
    45             double rmid = (lmid + r) / 2;
    46             if (cal (lmid) < cal (rmid))    r = rmid;
    47             else    l = lmid;
    48         }
    49         printf ("%.0f
    ", cal (l));
    50     }
    51 
    52     return 0;
    53 }
    编译人生,运行世界!
  • 相关阅读:
    layer open用法
    解决服务器连接错误Host ‘主机号’ is not allowed to connect to this MySQL server
    java数据类型转换
    Java数八大据类型的拓展
    Java八大基本数据类型
    JDK、JRE、JVM的基本介绍
    Java特性和优势
    Dos常用命令
    四种cmd打开方式
    Markdown学习
  • 原文地址:https://www.cnblogs.com/Running-Time/p/4676382.html
Copyright © 2020-2023  润新知