zoukankan      html  css  js  c++  java
  • JiaoZhu and WAR3

    JiaoZhu and WAR3
    Time Limit: 5000 MS Memory Limit: 65536 K
    Total Submit: 126(39 users) Total Accepted: 78(34 users) Rating: Special Judge: Yes
    Description

    自从电子竞技在中国被认定为第99个正式体育项目,教主就投身其中,WAR3(WarCraft3 魔兽争霸3)是他拿手的一款游戏,当然也有很多职业选手参与其中。 魔兽争霸中每个选手都有自己的一片区域我们这里叫做主城,他们必须保卫自己的主城不受到侵犯。 教主在一场比赛中,企图通过建造防御塔来保卫自己的主城。 为了简化问题,我们规定了教主的主城是一个固定的正方形区域,坐标范围为-0.5 <= x <= 0.5,-0.5 <= y <= 0.5,防御塔的防御范围是一个以自身为圆心以R为半径的圆。这样只要有防御塔覆盖到的位置(包括圆的边缘)都是安全的。 教主建造了若干个防御塔,你的任务是帮助教主计算建造这若干个防御塔后他的主城还有多少面积没有被覆盖到。

    Input

    本题有多组测试数据,对于每组测试数据格式如下: 第1行:一个数字N(0 <= N <= 50)代表防御塔的个数 第2..1 + N行:每行三个数字x0, y0, R分别代表,该防御塔的坐标x0, y0及其覆盖半径R (-1.0 <= x0, y0 <= 1.0, 0 <= R <= 10.0) 处理到文件结束(EOF)

    Output

    对应每组数据输出没有被覆盖到的面积,要求近似到3位小数。 本题允许你的结果有0.006的误差,即 |你的结果-标准结果| <= 0.006 都会被接受。

    Sample Input
    0 1 0 0 0.1 2 -0.5 -0.5 0.5 0.5 0.5 0.5 1 0 0 10
    2
    -0.5 -0.5 1
    0.5 -0.5 1
    Sample Output
    1.000 0.969 0.607 0.000
    0.043
    Hint

    圆的方程为 (x - x0)^2 + (y - y0)^2 <= R^2

    #include<cstdio>
    #include<cmath>
    #include<queue>
    #include<iostream>
    using namespace std;
    
    int main()
    {
        int a[101][101];
        double x0,y0,r0;
        double x,y,r;
        int n;
        while(~scanf("%d",&n))
        {
            int i,j;
            for(i=0;i<=100;i++)
            {
                for(j=0;j<=100;j++)
                {
                    a[i][j]=0;
                }
            }
            double ans=10201.0;
            while(n--)
            {
                scanf("%lf%lf%lf",&x0,&y0,&r0);
                x=x0*100+50;
                y=y0*100+50;
                r=r0*100;
                for(i=0;i<=100;i++)
                {
                    for(j=0;j<=100;j++)
                    {
                        if(a[i][j]==0&&(i-x)*(i-x)+(j-y)*(j-y)<=r*r)
                        {
                            a[i][j]=1;
                            ans--;
                        }
                    }
                }
            }
            
            ans=1.0*ans/10201.0;//就算面积算的是点的个数,所以要除以101*101
            printf("%.3f
    ",ans);
        }
        return 0;
    }
  • 相关阅读:
    hadoop用到的shell脚本
    hadoop搭建完全分布式集群
    hadoop搭建伪分布式集群
    ARM Compute Library编译安装
    OpenBlas交叉编译安装
    正则表达式去除所有标签html标签
    xstream实现xml字符串与对象直接的转换
    spring-boot中使用mybatis-plus代码生成器让你轻松的完成单表的CURD
    开源、免费软件和网站分享
    2020春软件工程助教工作期末总结
  • 原文地址:https://www.cnblogs.com/beige1315402725/p/4982727.html
Copyright © 2011-2022 走看看