概率dp部分題目

2022-02-27 10:47:59 字數 1813 閱讀 8024

記錄一些比較水不值得單獨寫一篇blog的概率dp題目

bzoj3036 綠豆蛙的歸宿

給出乙個有向無環的連通圖,起點為1終點為n,每條邊都有乙個長度。綠豆蛙從起點出發,走向終點。

到達每乙個頂點時,如果有k條離開該點的道路,綠豆蛙可以選擇任意一條道路離開該點,並且走向每條路的概率為\(\frac\) 。

現在綠豆蛙想知道,從起點走到終點的所經過的路徑總長度期望是多少?

第一行: 兩個整數 n m,代表圖中有n個點、m條邊

第二行到第 1+m 行: 每行3個整數 a b c,代表從a到b有一條長度為c的有向邊

從起點到終點路徑總長度的期望值,四捨五入保留兩位小數。

對於100%的資料,\(n\leq 100000,m\leq 2n\)

寫題那天bzoj又又又又又炸了,這放的是乙個dbzoj的鏈結

話說今天上午做[scoi2008]獎勵關那題,順推逆推好久弄不明白,做個水題放鬆一下

直接設狀態\(f_i\)是從\(i\)到\(n\)的路徑長度期望

dfs的時候直接把每種路徑的長度和加起來,再除以它的出度就行了

#include#include#include#include#include#include#define reg register

#define en std::puts("")

#define ll long long

inline int read()

while(c>='0'&&c<='9')

return y?x:-x;

}int n,m;

double f[100006];

int vis[100006],out[100006];

int fir[100006],nex[200005],to[200006],w[200006];

void dfs(int x)

if(out[x]) f[x]/=out[x];

}int main()

dfs(1);

std::printf("%.2lf",f[1]);

return 0;

}

cf 518d

有\(n\)個人排成一列,每秒中隊伍最前面的人有\(p\)的概率走上電梯(一旦走上就不會下電梯),或者有\(1 - p\)的概率不動。問你\(t\)秒過後,在電梯上的人的期望。

轉換為求概率,設\(f_\)為時間為\(i\),電梯上有\(j\)個人的概率

那麼很顯然,\(f_p\rightarrow f_,f_(1-p)\rightarrow f_\)

最後統計成期望就行了

但還有一點,就是如果當前已經有\(n\)個人在電梯上了,不會走下來,就要\(f_+=f_\)

#include#include#include#include#include#include#define reg register

#define en std::puts("")

#define ll long long

inline int read()

while(c>='0'&&c<='9')

return y?x:-x;

}int n,t;

double p;

double f[2006][2006];//時間為i,電梯上有j人的概率

int main()

reg double ans=0;

for(reg int i=1;i<=n;i++) ans+=i*f[t][i];

std::printf("%lf",ans);

return 0;

}

幾何概率題目

1.在區間 2,2 裡任取2個實數,它們的平方和 1的概率是大約是 是不是似曾相識?對的額 就是想不起來怎麼辦 好吧 還是看答案吧 還是將1維的轉換成2維的比較合適一點 畢竟公升了一維 看東西都比人家厲害了 不是麼 該區間內任意取兩個數就相當於在直角座標系中任意取乙個點,轉化為如下問題 在正方形範圍...

概率DP初步

題目簡述 乙個r行c列的格仔,起始點在 1,1 終點在 r,c 每一步可能的走法有 不動 向右走 向下走,每走一步花費兩點魔法值,現給出在每一點三種走法的概率,求走完迷宮時所花魔法值的期望。分析 運用dp演算法的話,首先需要確定乙個合適狀態來描述子問題的情況,很明顯本題的狀態可以定義為dp i j ...

概率dp入門

概率dp主要用於求解期望 概率等題目。轉移方程有時候比較靈活。一般求概率是正推,求期望是逆推。通過題目可以體會到這點。poj2096 collecting bugs include include include include include typedef long long ll using ...