zoukankan      html  css  js  c++  java
  • csp-M4-B-ZJM要抵御宇宙射线

    题目描述:

    据传,2020年是宇宙射线集中爆发的一年,这和神秘的宇宙狗脱不了干系!但是瑞神和东东忙于正面对决宇宙狗,宇宙射线的抵御工作就落到了ZJM的身上。

    假设宇宙射线的发射点位于一个平面,ZJM已经通过特殊手段获取了所有宇宙射线的发射点,他们的坐标都是整数。而ZJM要构造一个保护罩,这个保护罩是一个圆形 ,*中心位于一个宇宙射线的发射点上*。同时,因为大部分
    经费都拨给了瑞神,所以ZJM要节省经费,做一个最小面积的保护罩。当ZJM决定好之后,东东来找ZJM一起对抗宇宙狗去了,所以ZJM把问题扔给了你~
    输入描述
    输入第一行一个正整数N,表示宇宙射线发射点的个数
    接下来N行,每行两个整数X,Y,表示宇宙射线发射点的位置
    输出描述
    输出包括两行
    第一行输出保护罩的中心坐标x,y用空格隔开
    第二行输出保护罩半径的平方
    (所有输出保留两位小数,如有多解,输出x较小的点,如还有多解,输入y较小的点)
    无行末空格
    样例输入

    5
    0 0
    0 1
    1 0
    0 -1
    -1 0
    1
    2
    3
    4
    5
    样例输出

    0.00 0.00
    1.00

    解题思路:

    暴力搜索,从所有点中找一个点,使得其到其余点的最大距离最短即可!

    注意

    1)数据范围:距离平方会超出int,所以dis用 long long 存储

    2)多解输出 x较小,y较小的点(节点关键字排序)

    代码:

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cmath>
     4 #include<algorithm> 
     5 using namespace std;
     6 typedef long long ll;
     7 int N;  //
     8 //求最小覆盖半径和中心点坐标 
     9 struct node{
    10     int x;
    11     int y;
    12 };
    13 bool cmp(node n1,node n2){
    14     if(n1.x!=n2.x) return n1.x<n2.x;
    15     else return n1.y<n2.y;
    16 }
    17 node p[1001]; 
    18 ll dis[1001][1001];
    19 ll maxd[1001]; 
    20 int index;
    21 int main(){
    22     cin>>N;
    23     //找一点到所有其他所有点最大距离最小 
    24     for(int i=1;i<=N;i++){
    25         cin>>p[i].x>>p[i].y;
    26 //        for(int j=1;j<i;j++){
    27 //            dis[i][j]= pow((p[i].x-p[j].x),2)+pow((p[i].y-p[j].y),2);
    28 //            dis[j][i]=dis[i][j] ;
    29 //            //cout<<"dis["<<i<<"]["<<j<<"] :"<<dis[i][j]<<endl; 
    30 //        }        
    31     }
    32     sort(p+1,p+N+1,cmp);
    33 //    for(int i=1;i<=N;i++) cout<<p[i].x<<" "<<p[i].y<<endl;
    34     
    35     for(int i=1;i<=N;i++){
    36         for(int j=1;j<i;j++){
    37             dis[i][j]= pow((p[i].x-p[j].x),2)+pow((p[i].y-p[j].y),2);
    38             dis[j][i]=dis[i][j] ;
    39             //cout<<"dis["<<i<<"]["<<j<<"] :"<<dis[i][j]<<endl; 
    40         }        
    41     }
    42     for(int i=1;i<=N;i++) dis[i][i]=0;    
    43     //maxd[i] means maxdis for i to each points
    44     long long  maxdis=999999999999;
    45     for(int i=1;i<=N;i++){
    46         maxd[i]=0;
    47         for(int j=1;j<=N;j++){
    48             if(maxd[i] < dis[i][j])
    49             maxd[i]=dis[i][j];
    50         }
    51         //cout<<"maxd["<<i<<"]:  "<<maxd[i]<<endl;
    52         if(maxd[i]<maxdis){
    53             maxdis=maxd[i];
    54             index =i;
    55         }
    56         //cout<<"index:"<<index<<endl;
    57         //cout<<maxdis<<endl;                            
    58     }
    59     printf("%lld.00 %lld.00
    %lld.00
    ",p[index].x,p[index].y,maxdis);
    60 //    printf("%.2f %.2f
    ",double(p[index].x),double(p[index].y));
    61 //    printf("%.2f
    ",double(maxdis));
    62 //    for(int i=1;i<=N;i++){
    63 //        
    64 //    }
    65     
    66     
    67     return 0;
    68 } 
  • 相关阅读:
    python3
    hive与hbase集成
    spark读取hbase形成RDD,存入hive或者spark_sql分析
    spark机器学习笔记01
    CodeForces 55D Beautiful numbers
    NOIP 2016 D2T2 蚯蚓](思维)
    SCOI 2009 围豆豆(状压DP)
    POJ 1852 Ants(贪心)
    STA树的深度(树型DP)
    HDU 5963 朋友 (找规律,思维)
  • 原文地址:https://www.cnblogs.com/liuzhuan-xingyun/p/13049035.html
Copyright © 2011-2022 走看看