2013编程之美全国挑战赛第二场-集会

简介:

昨天做编程之美的题感觉只有这一道是水题。思路没问题但是写程序写错了一个地方没AC。今天翻出来想了一下终于解决了。

解题思路:

要寻找的这个目标点的纵坐标为0,设横坐标为x。以示例数据为例,可以得到目标点到这些点的距离,更直观一点,绘制成图形点击查看。观察可知符合要求的点可能出现的位置是某两个抛物线的交点或者某个抛物线的顶点。求出这些点来比较计算出的距离,取最小的即可。没机会提交的代码如下:


import java.util.Scanner;  

public class Main {  
    public static void main(String[] args) {  
        Scanner in = new Scanner(System.in);  
        int T = in.nextInt();// T个测试  
        for (int t = 0; t < T; t++) {  
            int N = in.nextInt();  
            int x[] = new int[N];  
            int y[] = new int[N];  
            for (int i = 0; i < N; i++) {  
                x[i] = in.nextInt();  
                y[i] = in.nextInt();  
            }  
            double min = Double.MAX_VALUE;  
            double ret = 0;  
            for (int i = 0; i < N; i++) {  
                for (int j = i + 1; j < N; j++) {  
                    double d = 0.5  
                            * (sq(x[i]) - sq(x[j]) + sq(y[i]) - sq(y[j]))  
                            / (x[i] - x[j]);  
                    double res = calc(x, y, d);  
                    if (res < min) {  
                        min = res;  
                        ret = d;  
                    }  
                }  
            }  
            for (int i = 0; i < N; i++) {  
                double d = x[i];  
                double res = calc(x, y, d);  
                if (res < min) {  
                    min = res;  
                    ret = d;  
                }  
            }  
            System.out.println("Case #" + (t + 1) + ": " + ret);  
        }  
    }  

    public static int sq(int x) {  
        return x * x;  
    }  

    public static double sq(double x) {  
        return x * x;  
    }  

    public static double calc(int[] x, int[] y, double d) {  
        double max = 0.0;  
        for (int i = 0; i < x.length; i++) {  
            double temp = sq(x[i] - d) + sq(y[i]);  
            if (temp > max)  
                max = temp;  
        }  
        return max;  
    }  
}

目录
相关文章
|
10月前
|
算法
算法|华为精英挑战赛赛前预备
算法|华为精英挑战赛赛前预备
76 0
|
11月前
时隔4年再夺金奖!北大斩获「编程奥林匹克」亚军,刷新队史最高排名
时隔4年再夺金奖!北大斩获「编程奥林匹克」亚军,刷新队史最高排名
111 0
|
算法
2021-2022年度第三届全国大学生算法设计与编程挑战赛(秋季赛)热身赛 B.这是一道大水题(树状数组)
2021-2022年度第三届全国大学生算法设计与编程挑战赛(秋季赛)热身赛 B.这是一道大水题(树状数组)
110 0
2021-2022年度第三届全国大学生算法设计与编程挑战赛(秋季赛)热身赛 B.这是一道大水题(树状数组)
|
机器学习/深度学习 算法
|
机器学习/深度学习 人工智能 达摩院
为亿级用户的美好出行而战!高德地图首届算法大赛落幕 95后北邮在读博士带队夺冠
高德地图号召全球的开发者利用人工智能技术探索动态路况难题,收到了国内外顶尖学府、科研机构以及一线知名技术企业等产学研各界技术爱好者的积极响应。
为亿级用户的美好出行而战!高德地图首届算法大赛落幕 95后北邮在读博士带队夺冠
阿里云天池发布“最聪明榜单”,浙大夺冠、东北大学“最强黑马”进前三
7月4日,阿里云天池大赛发布“最聪明榜单”,对历史参赛高校进行排名。数据显示,国内高校中浙大参赛热情最高,新加坡国立大学则荣登海外榜首。
2375 0