【BZOJ 1913】 [Apio2010]signaling 信号覆盖
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 信号覆盖相关推荐
- 1913: [Apio2010]signaling 信号覆盖
1913: [Apio2010]signaling 信号覆盖 Time Limit: 20 Sec Memory Limit: 64 MB Submit: 1420 Solved: 573 [Subm ...
- 【BZOJ-1913】signaling信号覆盖 极角排序 + 组合
1913: [Apio2010]signaling 信号覆盖 Time Limit: 20 Sec Memory Limit: 64 MB Submit: 1232 Solved: 506 [Su ...
- 京东总部大厦已经完成5G信号覆盖 网速是4G的20倍!
近日,工信部正式向中国移动.中国联通.中国电信.中国广电发放5G牌照,标志着5G时代的正式到来. 有消息称,京东总部大厦已经完成联通/移动的5G信号覆盖,成为北京地区第一批开通5G室内信号服务的试点商 ...
- inventor弧度怎么标注_家里房间太大,WiFi信号覆盖不了怎么办?网件新作:分身术...
面对房子原来越大.家居越来越多的现状,即便是上万兆无线路由器也可能会有死角的出现,尤其是在接入网络的设备增加以后,时常会出现掉线.卡顿的问题,Mesh组网已经成了当下网络时代的新需点,它的实现通过Me ...
- WiFi信号覆盖面积小?如何扩大Wifi信号覆盖范围?
WiFi已是现代生活不可缺少的组成之一,在WiFi的帮助下,一个家庭网络或办公网络,能够通过无线的方法连接诸多设备.为增进大家对WiFi的认识,本文将对WiFi以及扩大WiFi信号覆盖范围的方法予以介 ...
- 电信手机信号测试软件,科技神器实现联通、电信、移动信号覆盖,亲测,信号杠杠滴!...
原标题:科技神器实现联通.电信.移动信号覆盖,亲测,信号杠杠滴! 在餐厅吃饭,想必很多人都离不开手机,如果在餐厅手机信号不好,容易给客户一个不好的体验.所以我们可以看出信号强对于餐厅的重要性.但要知道 ...
- 雷达ADS-B信号覆盖评估系统-SRTM高程数据可视化处理
在完成了SRTM数据文件的载入.解析后,即可提取出高程数值.高程数据均为正整数,采用色带对高程数据进行映射,将不同的高程数值得映射成为不同的颜色值即可.色带映射其原理也很简单,与热度图的制作方式相一致 ...
- Samtec技术前沿 | 全新电缆系统提升了热管理并延长了信号覆盖范围
[摘要/前言] 一种全新高速.高密度电缆系统扩展了信号覆盖范围,以实现下一代的速度,并改善了热管理. Samtec的高速电缆产品经理Andy Shrout向我们展示了这个最初在DesignCon 20 ...
- 对讲机服务器信号不好怎么办呢,对讲机信号覆盖差怎么办?
原标题:对讲机信号覆盖差怎么办? 很多用户在使用对讲机时反应,对讲机的信号不好,经常会出现断断续续的声音.照道理来说,这种情况在大功率对讲机上一般不会出现,但是要知道,对讲机通讯传输过程中,实则是受到 ...
最新文章
- 今年端午节,想回家看看父母...
- fastadmin的基本用法 自动生成crud模块
- html加载less,javascript – 动态加载less.js规则
- 多线程—AQS独占锁与共享锁原理
- windows下编译firefox
- 「小公式」平均数与级数
- pythonpyqt5线程暂停重启时间_PyQT5 停止死循环线程(监控文件是否修改)
- 三种主流的Kubernetes部署方式
- xshell 无法定位输入点_linux基础知识个人总结
- android应用热修复与插件化实践之路
- java中添加图片_java中添加图片的问题__ImageIcon_panel1_import_image1_useImage__169IT.COM
- matlab如何实现隔直滤波器,matlab的滤波器仿真——低通滤波器与插值滤波器
- 墨卡托投影和高斯-克吕格 (Gauss-Krüger) 投影
- Python爬虫实战一之使用Beautiful Soup抓取百度招聘信息并存储excel文件
- Eclipse中Java项目转化为Java Web项目
- GICv3软件overview手册之GICv3基本功能(2)
- Vue使用Object标签对接IC读卡器硬件
- 关于C++ delete 来释放new分配的内存
- 【转】“产品策划大神 如何进行用户需求分析,这篇文章实在说的透彻!!!【互联网方向】
- 特此郑重声明!我的文章全部是原创作品!转载请注明出处!
热门文章
- Android锁屏实践
- 超声波牙刷VS电动牙刷
- 第一次黑人,简直爽到不行!!
- 【考研经验】2018吉林大学软件工程专硕考研初试复试经验分享
- 重装系统qq游戏一进入就说与服务器断开连接win7,win7系统官方QQ游戏玩不了怎么办...
- HTML转PDF思路
- 高并发情况下创建多少线程合适
- 去掉flash builder生成apk时候自动加air前缀的方法
- php gd 描边,HTML5 Canvas 填充与描边(Fill And Stroke)
- Tableau图表 | 14、动态图(含1800-2018年世界人均收入与期望寿命动图操作实例)