1913: [Apio2010]signaling 信号覆盖

Time Limit: 20 Sec Memory Limit: 64 MB
Submit: 639 Solved: 255
[Submit][Status][Discuss]
Description

Input

输入第一行包含一个正整数 n, 表示房子的总数。接下来有 n 行,分别表示 每一个房子的位置。对于 i = 1, 2, .., n, 第i 个房子的坐标用一对整数 xi和yi来表 示,中间用空格隔开。
Output

输出文件包含一个实数,表示平均有多少个房子被信号所覆盖,需保证输出 结果与精确值的绝对误差不超过0.01。
Sample Input

4

0 2

4 4

0 0

2 0
Sample Output

3.500
HINT

3.5, 3.50, 3.500, … 中的任何一个输出均为正确。此外,3.49, 3.51,
3.499999,…等也都是可被接受的输出。
【数据范围】
100%的数据保证,对于 i = 1, 2, .., n, 第 i 个房子的坐标(xi, yi)为整数且
–1,000,000 ≤ xi, yi ≤ 1,000,000. 任何三个房子不在同一条直线上,任何四个房子不
在同一个圆上;
40%的数据,n ≤ 100;
70%的数据,n ≤ 500;
100%的数据,3 ≤ n ≤ 1,500。

一道神奇的思路题。

直接枚举三点计算肯定是不行的。

三点确定一圆,考虑再加入一个点,这个四边形一共会形成四种圆,每种圆肯定会包含构成这个圆的三个点。

①如果这四个点构成的是凹四边形:
四种圆中除了在圆上的三点之外,只有一种圆会包含剩余一个点,所以一个凹四边形对答案贡献为11。

②构成的是凸多边形:
四种圆中有两种圆会包含剩余的一个点(被包含的点分别是对角和大于180°的两个点),因此一个凸四边形对答案的贡献为22。

最终的期望就是3+凹四边形个数+2∗凸四边形个数(n3)3+\frac {凹四边形个数+2*凸四边形个数}{ n\choose 3}

凸四边形个数+凹四边形个数=(n4)凸四边形个数+凹四边形个数={n \choose 4}

考虑如何计算凹四边形个数:
枚举凹四边形的凹点xx,并以他作为极点对其他点按照极角排序,(n−13)−凸四边形{n-1 \choose 3}-凸四边形就是答案,再按照极角序枚举一个点yy,从与他的角度小于180°中的点选两个点就是x,yx,y与其他点构成的凸四边形个数。

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#define Pi acos(-1)
#define LL long long
#define M 2005
using namespace std;
struct Point
{double x,y;
}p[M];
double a[M*2];
int n;
LL C(int n,int m)
{LL ans=1;for (int i=1;i<=m;i++)ans=1LL*ans*(n-i+1);for (int i=2;i<=m;i++)ans/=i;return ans;
}
int main()
{scanf("%d",&n);for (int i=1;i<=n;i++)scanf("%lf%lf",&p[i].x,&p[i].y);LL t=0;for (int i=1;i<=n;i++){int tot=0;for (int j=1;j<=n;j++)if (j!=i){a[++tot]=atan2(p[j].y-p[i].y,p[j].x-p[i].x);if (a[tot]<0)a[tot]+=Pi*2;}sort(a+1,a+1+n-1);for (int j=1;j<n;j++)a[n-1+j]=a[j]+2*Pi;LL x=0;int now=1;for (int j=1;j<n;j++){while (now<(n-1)*2&&a[now+1]-a[j]<Pi)now++;if (now-j>1)x=x+C(now-j,2);}t=t+C(n-1,3)-x;}double ans=(double)(t+(C(n,4)-t)*2)/C(n,3)+3;printf("%.6lf\n",ans);return 0;
}

【BZOJ 1913】 [Apio2010]signaling 信号覆盖相关推荐

  1. 1913: [Apio2010]signaling 信号覆盖

    1913: [Apio2010]signaling 信号覆盖 Time Limit: 20 Sec Memory Limit: 64 MB Submit: 1420 Solved: 573 [Subm ...

  2. 【BZOJ-1913】signaling信号覆盖 极角排序 + 组合

    1913: [Apio2010]signaling 信号覆盖 Time Limit: 20 Sec  Memory Limit: 64 MB Submit: 1232  Solved: 506 [Su ...

  3. 京东总部大厦已经完成5G信号覆盖 网速是4G的20倍!

    近日,工信部正式向中国移动.中国联通.中国电信.中国广电发放5G牌照,标志着5G时代的正式到来. 有消息称,京东总部大厦已经完成联通/移动的5G信号覆盖,成为北京地区第一批开通5G室内信号服务的试点商 ...

  4. inventor弧度怎么标注_家里房间太大,WiFi信号覆盖不了怎么办?网件新作:分身术...

    面对房子原来越大.家居越来越多的现状,即便是上万兆无线路由器也可能会有死角的出现,尤其是在接入网络的设备增加以后,时常会出现掉线.卡顿的问题,Mesh组网已经成了当下网络时代的新需点,它的实现通过Me ...

  5. WiFi信号覆盖面积小?如何扩大Wifi信号覆盖范围?

    WiFi已是现代生活不可缺少的组成之一,在WiFi的帮助下,一个家庭网络或办公网络,能够通过无线的方法连接诸多设备.为增进大家对WiFi的认识,本文将对WiFi以及扩大WiFi信号覆盖范围的方法予以介 ...

  6. 电信手机信号测试软件,科技神器实现联通、电信、移动信号覆盖,亲测,信号杠杠滴!...

    原标题:科技神器实现联通.电信.移动信号覆盖,亲测,信号杠杠滴! 在餐厅吃饭,想必很多人都离不开手机,如果在餐厅手机信号不好,容易给客户一个不好的体验.所以我们可以看出信号强对于餐厅的重要性.但要知道 ...

  7. 雷达ADS-B信号覆盖评估系统-SRTM高程数据可视化处理

    在完成了SRTM数据文件的载入.解析后,即可提取出高程数值.高程数据均为正整数,采用色带对高程数据进行映射,将不同的高程数值得映射成为不同的颜色值即可.色带映射其原理也很简单,与热度图的制作方式相一致 ...

  8. Samtec技术前沿 | 全新电缆系统提升了热管理并延长了信号覆盖范围

    [摘要/前言] 一种全新高速.高密度电缆系统扩展了信号覆盖范围,以实现下一代的速度,并改善了热管理. Samtec的高速电缆产品经理Andy Shrout向我们展示了这个最初在DesignCon 20 ...

  9. 对讲机服务器信号不好怎么办呢,对讲机信号覆盖差怎么办?

    原标题:对讲机信号覆盖差怎么办? 很多用户在使用对讲机时反应,对讲机的信号不好,经常会出现断断续续的声音.照道理来说,这种情况在大功率对讲机上一般不会出现,但是要知道,对讲机通讯传输过程中,实则是受到 ...

最新文章

  1. 第一篇博客,java学生管理系统(挑战全网最全)
  2. OSChina 周四乱弹 —— 春天在哪里,春天在哪里?
  3. Android中XML的命名空间、自定义属性
  4. java多线程之Concurrent包
  5. cursoradpter自动更新
  6. DotNetty 实现 Modbus TCP 系列 (一) 报文类
  7. 使用BeanUitls提高对象拷贝效率
  8. 第八届育才杯机器人比赛_赛场、名单公布!南海区第八届“献血者杯”羽毛球公开赛“羽”你相约本周六...
  9. 【 IT版 】啥是佩奇?
  10. 最新《机器学习最优化》课程笔记,38页pdf,Optimization for Machine Learning
  11. Eclipse 取消 Import 堆叠
  12. Visual Studio 安装自定义插件
  13. LAMP-----2、php-5.3.27编译安装
  14. 从零开始学习python编程-从零开始学python
  15. java版本号分段比较_java实现的版本号比较
  16. python中如何下载安装库
  17. 阿里巴巴矢量图标库的使用步骤
  18. 外牌免检车辆上海年检
  19. js每日一题(11)
  20. 50部必看的经典好莱坞电影

热门文章

  1. Linux基础命令(四)文件查找和压缩、软件安装、源码包管理
  2. xshell mysql中文乱码_解决Xshell等Linux终端连接MySQL中文乱码问题
  3. mysql 递归查找部门下面的所有被这个部门管理的部门(mysql 递归查找节点的所有子节点)
  4. 安卓手机安装texlive方法
  5. 015 | JavaWeb新奥家电连锁网络系统项目源码 | 大学生毕业设计 | 极致技术工厂
  6. BigDecimal大小比较
  7. linux 脚本 切换目录,在shell脚本中切换目录ros生成
  8. 计算机中的windows任务管理器在哪,Win10系统中的explorer.exe在哪?怎么重启Windows资源管理器?...
  9. 什么是overcommit_memory?
  10. python爬虫爬取商城男装信息