記錄一些比較水不值得單獨寫一篇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 ...