• 哈理工2015 暑假训练赛 zoj 2976 Light Bulbs


     Light BulbsTime Limit:2000MS    Memory Limit:65536KB    64bit IO Format:%lld & %llu

    Description

    Wildleopard had fallen in love with his girlfriend for 20 years. He wanted to end the long match for their love and get married this year. He bought a new house for his family and hired a company to decorate his house. Wildleopard and his fiancee were very satisfied with the postmodern design, except the light bulbs. Varieties of light bulbs were used so that the light in the house differed a lot in different places. Now he asks you, one of his best friends, to help him find out the point of maximum illumination.

    To simplify the problem, we can assume each bulb is a point light source and we only need to consider the grid points of the flat floor of the house. A grid point is a point whose coordinates are both integers. The length and the width of house can be considered infinite. Illumination means the amount of light that go through in one unit area. The illumination of a point can be calculated by simply adding the illumination from each source. The illumination from a source can be calculated by the following equation:

    , where E is the illumination of the point, I is the luminous intensity of the source, R is the distance between the source and the point and i is the angle between the normal of the plane and the light to the point.

    Given the position and the luminous intensity of the light bulbs, you are asked to find the maximum illumination on the floor at the grid points.

    Input

    Standard input will contain multiple test cases. The first line of the input is a single integer T (1 <= T <= 20) which is the number of test cases. And it will be followed by T consecutive test cases.

    The first line of each test case contains one integer n(1 <= n <= 100), indicating the number of bulbs of the lamps in the house. The next n lines will contain 4 integers each, Xi, Yi, Zi, Ii, separated by one space, indicating the coordinates and the luminous intensity of the i-th bulb of the lamp. The absolute values of the coordinates do not exceed 100 and Zi is always positive. Ii is a positive integer less than 32768.

    Output

    Results should be directed to standard output. The output of each test case should be a real number rounded to 0.01, which is the maximum illumination on the floor at the grid points.

    Sample Input

    3
    1
    0 0 1 100
    4
    1 0 1 100
    0 1 1 100
    -1 0 1 100
    0 -1 1 100
    4
    1 0 100 10000
    0 1 100 10000
    -1 0 100 10000
    0 -1 100 10000
    

    Sample Output

    100.00
    147.43
    4.00
    
    
    这个大水题啊 赛后迅速1 a  只是有啥用啊  ~  当时由于少看了一个条件。他给定了枚举范围 ,那么这就好办了…… 仅仅需枚举-100  到100 矩形区域内的点就可以
    另外注意坐标系建立的时候不能使下标为负。那么我们就能够把原点建在(-100。100)上。然后三重循环搞定。
     
    
    #include<iostream>
    #include<sstream>
    #include<algorithm>
    #include<cstdio>
    #include<string.h>
    #include<cctype>
    #include<string>
    #include<cmath>
    #include<vector>
    #include<stack>
    #include<queue>
    #include<map>
    #include<set>
    using namespace std;
    const int INF=102;
    double cnt[2*INF+5][2*INF+5];
    
    double A(double x)
    {
        return x*x;
    }
    double dis(double x1,double y1,double z1,double x2,double y2,double z2 )
    {
    
        return sqrt(A(x1-x2)+A(y1-y2)+A(z1-z2));
    }
    int main()
    {
        int t;cin>>t;
        while(t--)
        {
            memset(cnt,0,sizeof(cnt));
            int n;cin>>n;
            for(int i=0;i<n;i++)
            {
                double x,y,z,I;scanf("%lf%lf%lf%lf",&x,&y,&z,&I);
                for(int i=0;i<=2*INF;i++)
                {
                    for(int j=0;j<=2*INF;j++)
                    {
    
                        double R=dis(x,y,z,i-INF,j-INF,0);
                        double t=z/R;
                        cnt[i][j]+=(I/(R*R))*t;
                    }
    
                }
            }
          double ans=-1;
          for(int i=0;i<=2*INF;i++)
          {
              for(int j=0;j<=2*INF;j++)
              {
                  //cout<<cnt[i][j]<<" ";
                  ans=max(cnt[i][j],ans);
              }
    
          }
         printf("%.2lf
    ",ans);
        }
        return 0;
    }
    /*
    234
    1
    -102 -102 3
    */
    

  • 相关阅读:
    spring AOP概述和简单应用
    log4j输出指定功能的log配置方式区别
    java项目配置常见问题
    android 浮动按钮的伸缩效果
    Android之探究viewGroup自定义子属性参数的获取流程
    javaWeb之maven多数据库环境的配置信息
    mybatis generator配置生成代码的问题
    java之初识服务器跨域获取数据
    java之Maven配置和springMvc的简单应用
    UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe5
  • 原文地址:https://www.cnblogs.com/clnchanpin/p/6852973.html
Copyright © 2020-2023  润新知