2019牛客多校第一場 F題

2021-09-25 13:29:14 字數 1143 閱讀 7704

牛客多校第一場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 的 最小值的...