首页 > 其他 > 详细

UVSLive 6324 求射箭覆盖的期望

时间:2015-08-02 21:33:08      阅读:165      评论:0      收藏:0      [点我收藏+]

DES:给出n条线段。询问每次射中线段条数的期望。

非常简单。就是每条线段的两端与原点相连的直线之间的夹角和。如果夹角大于pi。就是2pi减去这个角。最后除以总值2pi就是所求的期望。

atan2(y, x)。表示指向(y, x)的射线和x轴正向组成的夹角。

不知道比赛的时候是不是也能想到。

技术分享
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<iostream>
#include<iomanip>
using namespace std;

int main()
{
    int t;
    double pi = 3.1415926;
    scanf("%d", &t);
    while(t--)
    {
        int n;
        scanf("%d", &n);
        int x1, y1, x2, y2;
        double ans = 0.0;
        double temp;
        while(n--)
        {
            scanf("%d%d%d%d", &x1, &y1, &x2, &y2);
            temp = fabs(atan2(y1, x1) - atan2(y2, x2));
            if (temp > pi) temp = 2*pi - temp;
            ans += temp;
        }
        ans /= 2*pi;
        printf("%.5lf\n", ans);
    }
}
LOoK

 

UVSLive 6324 求射箭覆盖的期望

原文:http://www.cnblogs.com/icode-girl/p/4696721.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!