UVSLive 6324 求射箭覆盖的期望

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

时间: 2024-10-16 08:06:17

UVSLive 6324 求射箭覆盖的期望的相关文章

UVALive 6324 Archery (求射箭覆盖的期望)

#include<cstdio> #include<cmath> #include<cstring> #include<cstdlib> const double pi=3.141592653; int main(){ int t; scanf("%d",&t); while(t--){ int n; scanf("%d",&n); double ans=0; double x1,y1,x2,y2; f

poj 3384 Feng Shui 半平面交的应用 求最多覆盖凸多边形的面积的两个圆 的圆心坐标

题目来源: http://poj.org/problem?id=3384 分析: 用半平面交将多边形的每条边一起向"内"推进R,得到新的多边形(半平面交),然后求多边形的最远两点. 代码如下: const double EPS = 1e-10; const int Max_N = 105 ; struct Point{ double x,y; Point(){} Point(double x, double y):x(x),y(y){} Point operator - (Point

HDU 1542 Atlantis (线段树求矩阵覆盖面积)

题意:给你n个矩阵求覆盖面积. 思路:看了别人的结题报告 给定一个矩形的左下角坐标和右上角坐标分别为:(x1,y1).(x2,y2),对这样的一个矩形,我们构造两条线段,一条定位在x1,它在y坐标的区间是[y1,y2],并且给定一个cover域值为1:另一条线段定位在x2,区间一样是[y1,y2],给定它一个cover值为-1.根据这样的方法对每个矩形都构造两个线段,最后将所有的线段根据所定位的x从左到右进行排序 #include <iostream> #include <stdio.h

求一个覆盖所有点的最小圆 最小圆覆盖

题目大意:平面上有n个点,求绘制一个半径最小的圆,覆盖所有的点  精度0.1  点的坐标最大为 100000 方法1:http://wenku.baidu.com/view/584b6d3e5727a5e9856a610d.html   O(n) 方法2:三分套三分暴力求解如下.O(1600 n)时间开销  1600~(log  2/3  0.1/100000) ^2 1 float disy(float y,float x) 2 { 3 int n=pvec.size(); 4 float R

HDU 5984(求木棒切割期望 数学)

题意是给定一长为 L 的木棒,每次任意切去一部分直到剩余部分的长度不超过 D,求切割次数的期望. 若木棒初始长度不超过 D,则期望是 0.000000: 设切割长度为 X 的木棒切割次数的期望是 F(X). 则 F(X) = F(切割点位置为 0 ~ D) + F(切割点位置为 D ~ X ) + 1:(此处的 +1 是指首次切割产生的次数) 而 F(切割点位置为 0 ~ D ) = 0:(因为已无需再切割) 令下一次切割点的位置为 T, F(切割点位置为 D ~ X ) = 在D~X上积分 (

POJ2069 最小球覆盖 几何法和退火法

对这种问题不熟悉的读者 可以先去看一看最小圆覆盖的问题 ZOJ1450 现在我们来看最小球覆盖问题POJ2069 题目很裸,给30个点 求能覆盖所有点的最小球的半径. 先给出以下几个事实: 1.对于一个点,球心就是这个点且半径无穷小. 2.对于两个点,球心是两个点线段的中点,半径就是线段长度的一半. 3.对于三个点,三个点构成的平面必为球的大圆,所以球心是三角形的外心,半径就是球心到某个点的距离. 4.对于四个点,若四个点共面则转化到3,只需考虑某三个点的情况,若四点不共面,四面体可以唯一确定一

【NOIP模拟题】小象涂色(概率+期望+递推)

表示数学是个渣... 其实只需要推出每个箱子k次以后的颜色为i的概率就能算出期望了.. 对于区间[l, r]的箱子因为是任意颜色且任意取,所以概率分别为1/c和1/2,那么整体概率就为这两个的乘积.根据全概率公式,对于后边的状态我们可以累加和就行了.. 求出概率后期望就是颜色编号*概率....... 暴力40分..O(k*n*c^2)... #include <cstdio> #include <cstring> #include <cmath> #include &l

【最小矩形面积覆盖:凸包+旋转卡壳】UVA 10173 Smallest Bounding Rectangle

[最小矩形面积覆盖:凸包+旋转卡壳]UVA 10173 Smallest Bounding Rectangle 题目链接:UVA 10173 Smallest Bounding Rectangle 题目大意 给你n个点,求能够覆盖所有点集的最小矩形面积. 笔者的第2道凸包题目,凸包 + 旋转卡壳,实现点集的最小矩形面积覆盖问题 ">=0"写成"<=0"坑了我一下午!QAQ 说一下思路 ①Graham's Scan法构建凸包,时间复杂度O(nlogn) ②

HDU 4509 湫湫系列故事——减肥记II(线段树-区间覆盖 或者 暴力技巧)

http://acm.hdu.edu.cn/showproblem.php?pid=4509 题目大意: 中文意义,应该能懂. 解题思路: 因为题目给的时间是一天24小时,而且还有分钟.为了解题方便,我们将小时换成分钟,那么一天24小时,总共有1440分钟.顾我就可以把一天里的任意HH:MM时间换成分钟.就这样一天的时间就变成[0,1440]区间了. 因为所给的活动最多是5*10^5,如果把活动的时间在线段[0,1440]都修改,那么时间的复杂度最坏是O(5*10^5*1440). (1)方法一