題解 Heaps of Fun 概率論

2022-02-23 18:45:41 字數 1309 閱讀 4418

看完題解才發現講題的時候講的是什麼屎,你說的分段是指分兩段嗎.......

簡要題意:

給定你一棵樹(不一定是二叉樹),每個點有個隨機點權,在\([0,a[u]]\)均勻分布,問你這棵樹滿足堆性質(小根堆)的概率是多少?

取值如果是整數可以直接dp,但是如果是實數怎麼辦?

邊界條件很好辦,不論咋樣都是合法的,但是怎麼轉移呢??

假若\(x_u=x\),那麼如果要合法,就要保證\(x_< x\),而這個概率就是\(f_(x)\)(因為概率分布函式是連續的),所以

\[p(x_u=x)=\prod_ p(x_v>x)

\]但是\(x\)是連續的隨機變數,我們只能通過\(f,f\)來轉移。設\(low[x]\)表示\(x\)子樹內最小的\(a[u]\)值,那麼這個值是最小滿足條件(合法且在定義域內)的值(實際上取不到,只能無限接近),所以\(p(x_x>t)=f(low[x])-f(t)\)。設\(=h_u(x)\)

根據一些前置姿勢(概率論與數理統計上有),\(f_x(t)=p(x_x=t)\),根據書上的關係就有\(f(x)=\int f(x)\),那麼直接積分一下就好了

答案是\(h_(+\inf)=f_[0]\)

//@winlere

#include#include#include#include#includeusing namespace std; typedef long long ll;

inline int qr()

typedef vectorpoly;

const int mod=1e9+7;

const int maxn=3e2+5;

poly f[maxn],e[maxn];

int low[maxn],a[maxn],n,rt;

int mod(const int&x)

int mod(const int&x,const int&y)

poly operator * (poly a,poly b)

void int(poly&x)

int f(const poly&x,int g)

void add(int fr,int to)

void dfs(int now);

int(f[now]); f[now][0]=f(f[now],low[now]);

for(int t=1,ed=f[now].size();t}int main()

dfs(rt);

printf("%d\n",f[rt][0]);

return 0;

}

概率論學習

離散型隨機變數的值和概率的分布列表 在很多教材中,這樣的列表都被叫做離散型隨機變數的 概率分布 其實嚴格來說,它應該叫 離散型隨機變數的值分布和值的概率分布列表 這個名字雖然比 概率分布 長了點,但是對於我們這些笨學生來說,肯定好理解了很多。因為這個列表,上面是值,下面是這個取值相應取到的概率,而且...

概率論基礎

概率論 第一章 隨機事件及其概率 分為兩類 1.確定性現象 2.隨機現象 1.1隨機事件及其運算 1.隨機試驗與樣本空間 隨機試驗具有下列三個特徵 1 試驗可在相同條件下重複進行 2 試驗的結果不止乙個 3 每次實驗之前,不能判定哪乙個結果將會出現 用e表示隨機試驗。試驗e中的每乙個可能結果稱為基本...

概率論筆記

注 本文用 表示並運算,表示交運算,a 表示a的逆事件 樣本空間 乙個試驗中所有可能情況組成的集合 事件的關係與運算 a包含於b a發生 b發生 a並b a與b的和事件 a或b發生 a交b a與b的積事件 ab同時發生 a b a與b的差事件 a發生b不發生 a b互斥 不相容 a交b 空集 a b...