牛客多校第一場f-random-point-in-********/
給你個三角形abc,隨便丟個點p在三角形中,問max(sabp,sacp,sbcp)的期望值乘36的結果。
根據重心的性質,我們知道三個三角形被取到的概率(p點落在三個區域的面積)是一樣大的。
公式為:e = 1/3e1 + 1/3e2 + 1/3e3
根據對稱性,e1 = e2 = e3,所以我們只需要求乙個。
這裡我們求p點在四邊形adpe時三角形pbc的期望值e1
對於的三角形pbc,它能夠被max()取到當且僅當它落在四邊形adge區域,概率為1/3。要求三角形pbc在這個區域的面積的期望值,即為在這個區域取到的p點的高(p到bc的距離)的期望值,而在四邊形adge區域中,p點的高的期望值即為四邊形adge的重心到bc邊的距離。
所以問題轉化為求重心的高的期望值,求重心的高的期望值是因為這樣我們能夠知道三角形pbc面積的期望值與三角形abc面積的期望值的比值,既然要求的是比值,那麼重心的高的期望值的具體數值也不用算,直接求重心的高與點a的高的比值即可。
求四邊形重心的方法:
這裡連線了對角線ag,分成了左右兩個小三角形,它們的重心(中線的交點)的連線kl的中點m,即為四邊形的重心。
hm:mn:ng = 1 : 2:3
所以mf:am = 11:18
再乘36,即為22倍的三角形abc的面積
問題轉化為已知三點求三角形的面積,這裡用向量叉乘即可求三角形面積,記得取絕對值,除2再乘22可能會有精度問題,這直接乘11即為答案。
#include
using
namespace std;
typedef
long
long ll;
ll cal
(ll x1, ll y1, ll x2, ll y2)
//向量叉乘
intmain()
return0;
}
2019 牛客多校第一場 F
題目傳送門 考場上看到輸出36e,且保證36e是整數,然後想起整點三角形,面積一定是x 2,那麼可以猜出期望是三角形面積的x 18。理性分析,期望肯定大於1 2,不會超過2 3,或者超過一點,於是盲猜一發11 18過了。然後看到了正解,其實好像還挺好算了。不過求圖形期望這種沒什麼經驗,不知道怎麼去討...
2019牛客多校第一場
看到這裡我還能說什麼呢?自己慢慢證吧 就是這個 而 了 大佬們的結論是 三角形面積的22倍。我.手動膜拜。不會證.while true try x1,y1,x2,y2,x3,y3 map int,input split s abs x1 y2 x2 y1 x2 y3 x3 y2 x3 y1 x1 y...
2019 牛客多校 第一場
a 題意 就是兩個陣列,找最大的p,使對於1到p的所有子區間都保證最小值的下標相同 題解 每次往後加乙個值 第i 1位 都會多出 i 個區間,當a i 1 大於max a 1 a i 時沒有影響,當a i 小於max a 1 a i 時,因為a i 1 的加入會導致區間的rmq l到r 的 最小值的...