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;

    for(int i=1;i<=n;i++){
        scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2);
        double temp=fabs(atan2(y1,x1)-atan2(y2,x2));//atan2,特别注意
        if(temp>pi)
            temp=2.0*pi-temp;
            ans+=temp;

        }
      printf("%.5lf\n",ans/(pi*2.0));

  }
  return 0;
}
时间: 2024-12-09 19:53:19

UVALive 6324 Archery (求射箭覆盖的期望)的相关文章

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<

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

uvalive 7331 Hovering Hornet 半平面交+概率期望

题意:一个骰子在一个人正方形内,蜜蜂在任意一个位置可以出现,问看到点数的期望. 思路:半平面交+概率期望 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #include<iostream> 5 #include<cstdlib> 6 #include<string> 7 #include<cmath> 8 #include<vector&

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

题目大意:平面上有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

2015暑假训练赛个人赛(7.31)

    ID Origin Title 59 / 211 Problem A UVALive 6318 The New President 71 / 156 Problem B UVALive 6319 No Name   38 / 127 Problem C UVALive 6320 Encrypted Password 87 / 127 Problem D UVALive 6321 Kids Love Candies 1 / 20 Problem E UVALive 6322 The Swa

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,只需考虑某三个点的情况,若四点不共面,四面体可以唯一确定一

UVALive 4986 Dome of Circus(三分、凸包、凸性函数)

题目链接: UVALive 4986 Dome of Circus 题意: 在空间中给n个点的坐标,并且每个点都是在z轴的正半平面内,以原点(0,0,0)为底面圆圆心,画一个圆锥,要求圆锥要包含所有的点,点可以在圆锥面上,求最小的圆锥体积的底面圆半径和高. 数据范围:1≤n≤10000,并且所有点的坐标的绝对值都不超过10000 分析: 首先把三维的点转成二维的,因为是圆锥覆盖,所以我们只需要知道点到圆锥轴的距离和点的纵坐标就好了.那么可得: (x,y,z)→(x2+y2??????√,z) 这