zoukankan      html  css  js  c++  java
  • 洛谷 P1927 防护伞

    洛谷 P1927 防护伞

    链接

    https://www.luogu.org/problem/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<iomanip>
    #include<cmath>
    using namespace std;
    
    int main()
    {
    	int n;
    	cin>>n;
    	int x[n],y[n];
    	double len[n][n],minlen[n];
    	for(int i=0;i<n;i++)
    	{
    		cin>>x[i]>>y[i];
    	}
    
    	for(int i=0;i<n;i++)
    	{
    		for(int j=0;j<n;j++)
    		{
    			len[i][j]=sqrt(pow(x[i]-x[j],2)+pow(y[i]-y[j],2));
            	minlen[i]=max(minlen[i],len[i][j]);
    		}
    	}
    	
    	double min=30000;
    	for(int i=0;i<n;i++)
    	{
    		if(minlen[i]<min)
    			min=minlen[i];
    	}
    	
    	double ans=min*min*3.1415926535;
    	cout<<setiosflags(ios::fixed)<<setprecision(4)<<ans;
    	return 0;
    } 
    
  • 相关阅读:
    118/119. Pascal's Triangle/II
    160. Intersection of Two Linked Lists
    168. Excel Sheet Column Title
    167. Two Sum II
    172. Factorial Trailing Zeroes
    169. Majority Element
    189. Rotate Array
    202. Happy Number
    204. Count Primes
    MVC之Model元数据
  • 原文地址:https://www.cnblogs.com/blogxjc/p/11455496.html
Copyright © 2011-2022 走看看