2018牛客网暑假ACM多校训练赛(第三场)I Expected Size of Random Convex Hull 计算几何,凸包,其他
原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round3-I.html
题目传送门 - 2018牛客多校赛第三场 I
题意
在一个给定的三角形内部随机选择 $n$ 个点,问这些点构成的凸包的期望顶点数。
$3\leq n\leq 10$
题解
首先证明一个结论,对于任意三角形,随机撒 $n$ 个点的期望点数相同。
简单口胡:考虑任意拉扯三角形,三角形内部多边形的凸性都不会改变。
所以,我们只需要随便选择一个三角形,然后随机选点很多次,建出凸包,得到顶点数,然后算一算平均值,就可以得到答案了。
注意随机选点次数至少好几亿吧。
我赛后代码跑了大约 25 分钟才跑出来。
代码1 - 打表
%:pragma GCC optimize("Ofast")
%:pragma GCC optimize("inline")
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=20;
int n;
struct Point{
int x,y;
Point(){}
Point(int _x,int _y){
x=_x,y=_y;
}
}P[N],O;
LL cross(Point a,Point b,Point c){
return 1LL*(b.x-a.x)*(c.y-a.y)-1LL*(c.x-a.x)*(b.y-a.y);
}
int Drand(){
return (int)((((rand()&32767)<<10)+(rand()&1024))&33554431);
}
LL sqr(int x){
return 1LL*x*x;
}
LL dis(Point a,Point b){
return sqr(a.x-b.x)+sqr(a.y-b.y);
}
bool cmp_O(Point a,Point b){
if (a.y==b.y)
return a.x<b.x;
return a.y<b.y;
}
bool cmp_Angle(Point a,Point b){
LL c=cross(O,a,b);
if (c==0)
return dis(O,a)<dis(O,b);
return c>0;
}
int st[N],top;
int Convex(){
for (int i=2;i<=n;i++)
if (!cmp_O(P[1],P[i]))
swap(P[1],P[i]);
O=P[1];
sort(P+2,P+n+1,cmp_Angle);
top=0;
st[++top]=1,st[++top]=2;
for (int i=3;i<=n;i++){
while (top>=2&&cross(P[st[top-1]],P[st[top]],P[i])<=0)
top--;
st[++top]=i;
}
return top;
}
int main(){
freopen("list.txt","w",stdout);
srand(time(NULL));
for (int i=3;i<=10;i++){
n=i;
int tot=200000000,ttt=tot;
int ans=0;
while (tot--){
for (int i=1;i<=n;i++)
while (1){
P[i]=Point(Drand(),Drand());
if (P[i].y<=P[i].x)
break;
}
ans+=Convex();
}
printf("%.6lf\n",((double)ans)/ttt);
}
return 0;
}
代码2 - AC 代码
#include <bits/stdc++.h>
using namespace std;
double ans[11]={
0,0,0,
3.000000,
3.666719,
4.166715,
4.566691,
4.899998,
5.185735,
5.435731,
5.657986
};
int main(){
int n;
for (int i=1;i<=7;i++)
scanf("%d",&n);
printf("%.6lf",ans[n]);
return 0;
}
2018牛客网暑假ACM多校训练赛(第三场)I Expected Size of Random Convex Hull 计算几何,凸包,其他的更多相关文章
- 2018牛客网暑假ACM多校训练赛(第二场)E tree 动态规划
原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round2-E.html 题目传送门 - 2018牛客多校赛第二场 E ...
- 2018牛客网暑假ACM多校训练赛(第三场)G Coloring Tree 计数,bfs
原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round3-G.html 题目传送门 - 2018牛客多校赛第三场 G ...
- 2018牛客网暑假ACM多校训练赛(第三场)D Encrypted String Matching 多项式 FFT
原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round3-D.html 题目传送门 - 2018牛客多校赛第三场 D ...
- 2018牛客网暑假ACM多校训练赛(第十场)H Rikka with Ants 类欧几里德算法
原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round10-H.html 题目传送门 - https://www.n ...
- 2018牛客网暑假ACM多校训练赛(第十场)F Rikka with Line Graph 最短路 Floyd
原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round10-F.html 题目传送门 - https://www.n ...
- 2018牛客网暑假ACM多校训练赛(第十场)D Rikka with Prefix Sum 组合数学
原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round10-D.html 题目传送门 - https://www.n ...
- 2018牛客网暑假ACM多校训练赛(第八场)H Playing games 博弈 FWT
原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round8-H.html 题目传送门 - https://www.no ...
- 2018牛客网暑假ACM多校训练赛(第七场)I Tree Subset Diameter 动态规划 长链剖分 线段树
原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round7-I.html 题目传送门 - https://www.n ...
- 2018牛客网暑假ACM多校训练赛(第六场)I Team Rocket 线段树
原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round6-I.html 题目传送门 - https://www.no ...
随机推荐
- (二)远程代理Remoting/RealProxy
使用.Net Remoting/RealProxy 采用TransparentProxy和RealProxy实现对象的代理,实现思路如下:Client -TransparentProxy - Real ...
- Light OJ 1011
题意: (好难看) 给你 N 个 男的, 女的, 男的选女票, 题目给出矩阵, Mp[i][j] 表示 第 i 个男的选 第 J 个女的优先值 选了 J 之后的就不能选 J 了: 求所有狗男女的最大优 ...
- 前端 ---- jQuery的ajax
14-jQuery的ajax 什么是ajax AJAX = 异步的javascript和XML(Asynchronous Javascript and XML) 简言之,在不重载整个网页的情况下, ...
- <转载>bellman-ford算法
转载来源:https://www.cnblogs.com/tanky_woo/archive/2011/01/17/1937728.html 相关文章: 1.Dijkstra算法: http://ww ...
- select+异步
IO多路复用是指内核一旦发现进程指定的一个或者多个IO条件准备读取,它就通知该进程.IO多路复用适用如下场合: 当客户处理多个描述符时(一般是交互式输入和网络套接口),必须使用I/O复用. 当一个客户 ...
- Python-数据库 基本SQL语句
1. 数据库是什么 2. MySQL安装 3. 用户授权 4. 数据库操作 - 数据表 - 数据类型 - 是否可以为空 - 自增 - 主键 - 外键 - 唯一索引 数据行 增 删 改 查 排序: or ...
- MongoDB、Hbase、Redis等NoSQL优劣势、应用场景
NoSQL的四大种类 NoSQL数据库在整个数据库领域的江湖地位已经不言而喻.在大数据时代,虽然RDBMS很优秀,但是面对快速增长的数据规模和日渐复杂的数据模型,RDBMS渐渐力不从心,无法应对很多数 ...
- Oracle 口令文件:即 oracle密码文件
一:文件路径位置 [oracle@localhost db_1]$ cd $ORACLE_HOME/dbs [oracle@localhost dbs]$ ls dbsorapwPROD1 hc_or ...
- Node.js 调存储过程
var spring = require("spring"); //当前登录人ID var account_id = require('nodejava').toJs.parse( ...
- vue.js 入门学习
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...