三分 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\n", cal (l));
50     }
51
52     return 0;
53 }
时间: 2024-10-23 12:34:08

三分 POJ 2420 A Star not a Tree?的相关文章

[POJ 2420] A Star not a Tree?

A Star not a Tree? Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4058   Accepted: 2005 Description Luke wants to upgrade his home computer network from 10mbs to 100mbs. His existing network uses 10base2 (coaxial) cables that allow you

POJ 2420 A Star not a Tree? (计算几何-费马点)

A Star not a Tree? Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 3435   Accepted: 1724 Description Luke wants to upgrade his home computer network from 10mbs to 100mbs. His existing network uses 10base2 (coaxial) cables that allow you

POJ 2420 A Star not a Tree? (模拟退火)

题目地址:POJ 2420 今天在比赛遇到了这题..于是现场学了一下模拟退火.... 这题是先初始化为一个点,然后不断趋近距离和最短的点.还是挺简单的.. 代码如下: #include <iostream> #include <cstdio> #include <string> #include <cstring> #include <stdlib.h> #include <math.h> #include <ctype.h&g

POJ 2420 A Star not a Tree? 爬山算法

B - A Star not a Tree? Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=88808#problem/B Description Luke wants to upgrade his home computer network from 10mbs to 100mbs. His existing network uses 10ba

poj 2420 A Star not a Tree?——模拟退火

题目:http://poj.org/problem?id=2420 精度设成1e-17,做三遍.ans设成double,最后再取整. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #include<cstdlib> #include<ctime> #define db double usin

POJ 2420 A Star not a Tree?【爬山法】

题目大意:在二维平面上找出一个点,使它到所有给定点的距离和最小,距离定义为欧氏距离,求这个最小的距离和是多少(结果需要四舍五入)? 思路:如果不能加点,问所有点距离和的最小值那就是经典的MST,如果只可以加一个点问最小值就是广义的费马点的问题,如果加点的数目不加限制,那问题就成了斯坦纳树的问题(介个属于NPC问题) 这题显然就是广义费马点问题,可以采用局部贪心法,从一个初始点出发,不断向上下左右四个方向拓展,如果在一个方向上走过去到所有点的距离和小于目前这个点到所有点的距离和,那就更新目前点的值

【POJ】2420 A Star not a Tree?

http://poj.org/problem?id=2420 题意:给n个点,求一个点使得到这个n个点的距离和最短,输出这个最短距离(n<=100) #include <cstdio> #include <cstdlib> #include <cmath> #include <algorithm> using namespace std; const int N=105; struct P { int x, y; }a[N]; int n; inlin

【POJ】2420.A Star not a Tree?(模拟退火)

题解 开始学习随机化算法= = 模拟退火的板子往上套就行,莫名其妙的就过了 可能数据太水,实现的具体细节可看代码 代码 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> //#define ivorysi #define MAXN 105 #define eps 1e-8 #define pb push_ba

【POJ 2420】A Star not a Tree?

A Star not a Tree? Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 3929   Accepted: 1952 Description Luke wants to upgrade his home computer network from 10mbs to 100mbs. His existing network uses 10base2 (coaxial) cables that allow you