• 洛谷 P1927 防护伞


    题目描述

    据说 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<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<cmath>
    #define MAXN 1010
    using namespace std;
    const double PI=3.1415926535;
    int n;
    double minn=0x7f7f7f7f,num,ans;
    double dis[MAXN][MAXN]; 
    struct nond{
        double x,y;
    }cnt[MAXN];
    int main(){
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
            scanf("%lf%lf",&cnt[i].x,&cnt[i].y);
        for(int i=1;i<=n;i++)
            for(int j=i+1;j<=n;j++)
                dis[j][i]=dis[i][j]=sqrt((cnt[i].x-cnt[j].x)*(cnt[i].x-cnt[j].x)+(cnt[i].y-cnt[j].y)*(cnt[i].y-cnt[j].y));
        for(int i=1;i<=n;i++){
            num=0;
            for(int j=1;j<=n;j++)    num=max(num,dis[i][j]);
            if(num<minn){ minn=num;ans=num*num*PI; }
        }
        printf("%.4lf",ans);
    }
    细雨斜风作晓寒。淡烟疏柳媚晴滩。入淮清洛渐漫漫。 雪沫乳花浮午盏,蓼茸蒿笋试春盘。人间有味是清欢。
  • 相关阅读:
    4/19学习总结
    人月神话读后感8
    4/18学习总结:PullToRefresh
    构建之法阅读笔记03
    构建之法阅读笔记02
    个人总结
    大二下学期课程总结
    学习进度16
    学习进度15
    课堂测试-找英语单词最长链
  • 原文地址:https://www.cnblogs.com/cangT-Tlan/p/7846805.html
Copyright © 2020-2023  润新知