HDU4978概率几何
来源:互联网 发布:350淘宝模板破解 编辑:程序博客网 时间:2024/06/04 20:12
题目意思不是很清楚,看着人家的题解试着做,当练代码吧。
由概率论书上什么抛针问题(我也不懂)可知一条长度为L的线段与间距为D的平行线相交的概率为2L / πD,由此我们可知凸包上一条线段Li与间距为D的平行线相交的概率为2Li / πD,又因为凸包上如果有一条线段与平行线相交则必定存在另一条线段Lj与Li同时与平行线相交(凸包是封闭凸多边形),那么2Li / πD = ∑Pij(Pij表示Li与Lj同时与平行线相交的概率,同时i!=j),则凸包与平行线相交的概率为1 / 2 * sum{ sum{ Pij | i != j } | 1 <= i <= n },除以2的原因是Pij与Pji是等价的,是同时满足的。
那么问题最后就转化成了求凸包的周长了。
#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>#include<vector>#include<queue>#include<stack>#define rt return#define sf scanf#define pf printf#define si(n) sf("%d",&n)#define REP0(i,n) for(int i=0;i<(n);i++)#define REP1(i,n) for(int i=1;i<=(n);i++)#define REP(i,s,n) for(int i=s;i<=(n);i++)#define db double#define LL long long#define op operator#define INF 0x3fffffff#define eps 1e-8#define PI acos(-1)#define maxn 1010using namespace std;struct node{ db x,y; node(){} node(db a,db b){x=a,y=b;} void in(){sf("%lf%lf",&x,&y);} void out(){pf("%lf %lf\n",x,y);} node op + (node a) {rt node(x+a.x,y+a.y);} node op - (node a) {rt node(x-a.x,y-a.y);} db op * (node a) {rt x*a.x+y*a.y;} db op ^ (node a) {rt x*a.y-a.x*y;} db dis(){rt sqrt(x*x+y*y); } db dis(node a) {rt sqrt((x-a.x)*(x-a.x)+(y-a.y)*(y-a.y));} bool op <(node& a) {return y<a.y||(y==a.y&&x<a.x);} db cross(node a,node b) {return (a-*this)^(b-*this);} bool on_seg(node a,node b){ return ((a-*this)^(b-*this))==0 && ((a-*this)*(b-*this))<=0 ;}}p[maxn],s[maxn];int n;bool cmp(node a,node b){ db res=(a-p[0])^(b-p[0]); rt res>0;}int sig(db x){rt (x>eps)-(x<-eps); }int convex(){ sort(p+1,p+n,cmp); int top=-1; s[++top]=p[0]; for(int i=1;i<n;i++){ while(top>1&&sig((p[i]-s[top-1])^(s[top]-s[top-1]))>0)top--; s[++top]=p[i]; } s[++top]=p[0]; rt top;}int main(){ #ifdef ACBang freopen("in.txt","r",stdin); #endif int T;si(T); int CASE=1; while(T--){ db D; sf("%d%lf",&n,&D); p[0].in(); for(int i=1;i<n;i++){ p[i].in(); if(p[i]<p[0])swap(p[i],p[0]); } int top=convex();//包含起点且为末尾的坐标 db L=0; for(int i=0;i<top;i++)L+=(s[i]-s[i+1]).dis();// pf("%lf\n",L); pf("Case #%d: %.4lf\n",CASE++,L/PI/D); } rt 0;}
0 0
- HDU4978概率几何
- HDU4978
- 几何概率题目
- UVA 11722 概率几何
- 一道概率题目--几何概型
- 抽签问题或是超几何概率
- Uva11722 joining with friend 概率 几何计算
- [ACM] POJ 3440 Coin Toss (几何概率)
- UVA 11971 - Polygon(概率+几何概型)
- poj3440--Coin Toss(几何上的概率)
- 用几何(解析几何)方法求解概率问题
- 概率密度函数与分布函数的几何含义
- [计蒜客 商汤科技的行人检测(困难)]概率+几何
- Excel在统计分析中的应用—第六章—概率分布及概率分布图-Part4-离散型概率分布(超几何分布函数HYPGEOM.DIST()的应用)
- 概率
- 概率
- 概率
- 概率
- 判断两个线段相交
- [Leetcode]Reverse Integer
- A*算法
- hdu 1024 Max Sum Plus Plus (dp优化)
- java compiler level does not match the version of the installed java project原因系类
- HDU4978概率几何
- lifery ActionURL和RenderURL区别
- java.jse-线程-线程池-java自带线程池和队列详细讲解
- mysql 语句大全
- 对于使用类模板下的友员函数的使用注意
- Android inline hook
- ios TableView那些事2(Swift 一) 初见TableView
- http请求
- eclipse配置nodejs开发环境