題目描述
給定平面上n個點及其出現的概率,問這n個點**現的那些點組成的凸包面積期望是多少,如果凸包退化為直線則視其面積為0。保證不出現三點共線。
輸入第一行,乙個整數n,表示點的個數。
第2~n+1行,每行三個數。前兩個整數x,y表示點的座標。第三個實數p,表示出現的概率。p最多有4位小數。
輸出一行乙個實數,表示期望面積。
答案保留6位小數。
3樣例輸出0 0 0.1
1 0 0.1
1 1 0.1
0.000500提示
對於三個點都出現的情況才有可能出現凸包。該凸包的面積為0.5。
所以期望面積為0.1×0.1×0.1×0.5=0.000500
對於30%的資料,n≤3
對於100%的資料,n≤100,−1000≤x,y≤1000,0≤p≤101。
暴力想法,列舉每一種情況,然後計算凸包面積,再計算期望,雖然不可行,但是暴力總是提供基本思想打完暴力就有想法了,求完凸包再求面積,我們是怎麼求面積的呢,一般都是用叉積求的吧
考慮乙個有向線段ab如果它被取,則會貢獻
#include#define int long long
using namespace std;
const int maxn = 105;
double x[maxn],y[maxn],p[maxn],ans;
int n;
double cj(double x1,double y1,double x2,double y2)
signed main()
}ans = ans + s;}}
}cout << abs(ans / 2) << endl;
return 0;
}
計算幾何 凸包問題
給定平面上的二維點集,求解其凸包。一 graham掃瞄法 1.在所有點中選取y座標最小的一點h,當作基點。如果存在多個點的y座標都為最小值,則選取x座標最小的一點。座標相同的點應排除。然後按照其它各點p和基點構成的向量與x軸的夾角進行排序,夾角由大至小進行順時針掃瞄,反之則進行逆時針掃瞄。實現中無需...
計算幾何 凸包
有多個手機訊號發射器,求解乙個最小區域,要求所有的發射器都包含在這個最小區域中,並且任意兩台發射器之間的交流包含於在這個區域內。將所有的發射器看做為點,任意兩個點之間的連線都包含於乙個平面s 乙個平面的子集s 是凸的,當且僅當 s中的任意兩個點之間的連線都包含於 s中。點集 p的凸包是所有包含 p的...
幾何 凸包(Graham)
在凸包內部的點肯定不會是最遠點對之一,可以不考慮,只列舉在凸包上的所有點對距離長度,並進行比較即可 建凸包 當加入乙個新的點1,這個點和上兩個點2 3組成的角是銳角,則表示點2凹進去了,不是凸包上的點,把點2刪去 include include include include include inc...