• 10.9做题——洛谷P1927防护伞


    洛谷1927 防护伞

    本题地址: http://www.luogu.org/problem/show?pid=1927

    题目描述
    据说 2012 的灾难和太阳黑子的爆发有关。于是地球防卫小队决定制造一个特殊防护 伞,挡住太阳黑子爆发的区域,减少其对地球的影响。由于太阳相对于地球来说实在是太 大了,我们可以把太阳表面看作一个平面,中心定为(0,0)。根据情报,在 2012 年时, 太阳表面上会产生 N 个黑子区域,每个黑子视为一个点。特殊防护伞可以看作一个巨大 的圆面,现在地球防卫小队决定将它的中心定位于某个黑子,然后用伞面挡住其他黑子。 因为制造防护伞的材料成本特别高,所以我们希望伞面尽可能的小。
    输入输出格式
    输入格式:
    第一行:一个整数 N,表示黑子个数。
    第 2 到 N-1 行:每行两个整数,表示黑子的坐标(x, y)。
    输出格式:
    第一行:一个实数,表示伞的面积。

    输入输出样例
    输入样例#1:
    3
    0 1
    -8 -4
    -1 4

    输出样例#1:
    279.6017

    说明
    【数据范围】
    对于 50%的数据: 2≤N≤100。
    对于 100%的数据: 2≤N≤1000。
    -10000≤x,y≤10000。
    【注意】
    精确到小数点后 4 位
    π=3.1415926535

    枚举太阳黑子,找所有黑子距离最大值中的最小值

    #include<iostream>
    #include<cmath>
    using namespace std;
    const int N=1005;
    struct node
    {
        int x,y;
    }a[N];
    double jl(int x,int y)
    {
        return sqrt((a[x].x-a[y].x)*(a[x].x-a[y].x)+(a[x].y-a[y].y)*(a[x].y-a[y].y));
    }
    int main()
    {
        int n,i,j;
        double minn=1000000000,maxn=-1;
        cin>>n;
        for(i=1;i<=n;i++)
            cin>>a[i].x>>a[i].y;
        for(i=1;i<=n;i++)
        {
            maxn=-1;
            for(j=1;j<=n;j++)
                if(j!=i)
                    if(jl(i,j)>maxn)
                        maxn=jl(i,j);
            if(maxn<minn)
                minn=maxn;
        }
        printf("%.4f",minn*minn*3.1415926535);
        return 0;
    }
    

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    Linux crontab 命令格式与举例
    my sql 两个 索引 时的 union 与 or 的比较
    网络通信5层传输
    算法 韩信点兵 循环左移数组元素
    sql 提升查询效率 group by option hash group
    微信引流活动:生成带参二维码、发送海报、
    PMP十大知识领域整理
    iis 站点中文乱码 解决方案
    pdb文件及引发的思考
    TFS 创建团队成员及管理
  • 原文地址:https://www.cnblogs.com/wuhu-xiaoshen/p/4918637.html
Copyright © 2020-2023  润新知