source實力透露做法。。
似乎有這麼個式子 f[
i,j]
→⎧⎩⎨
⎪⎪⎪⎪
⎪⎪⎪⎪
⎪⎪⎪⎪
⎪⎪⎪⎪
⎪⎪⎪⎪
⎪⎪⎪⎪
pi⋅p
j⋅f[
i,j]
1−pi
di⋅p
j⋅f[
x,j]
1−pj
dj⋅p
i⋅f[
i,y]
1−pi
di1−
pjdj
f[x,
y](x
∈adj
i,y∈
adjj
) 然後還有f[
a,b]
=1答案為f[
i,i]
? 開n*n個變數的方程組高斯消元?
時間複雜度o(
n6) 。
#include
#define for(i,j,k) for(i=j;i<=k;++i)
#define id(i,j) (i-1)*n+j
const
int n = 405, m = n * n / 2;
int h[n], nxt[m], v[m], d[n], cnt = 0, n;
double p[n], f[n][n];
void add(int a, int b)
void gauss(int n)
for(i=n-1;i;--i)
}void build(int x, int y)
}}int main()
for(i,1,n) scanf("%lf", p + i);
for(i,1,n) for(j,1,n) build(i, j);
gauss(n * n);
for(i,1,n)
return
0;}
有一天petya和他的朋友vasya在進行他們眾多旅行中的一次旅行,他們決定去參觀一座城堡博物館。這座博物館有著特別的樣式。它包含由m條走廊連線的n間房間,並且滿足可以從任何一間房間到任何一間別的房間。
兩個人在博物館裡逛了一會兒後兩人決定分頭行動,去看各自感興趣的藝術品。他們約定在下午六點到一間房間會合。然而他們忘記了一件重要的事:他們並沒有選好在哪兒碰面。等時間到六點,他們開始在博物館裡到處亂跑來找到對方(他們沒法給對方打**因為**漫遊費是很貴的)
不過,儘管他們到處亂跑,但他們還沒有看完足夠的藝術品,因此他們每個人採取如下的行動方法:每一分鐘做決定往**走,有pi 的概率在這分鐘內不去其他地方(即呆在房間不動),有1-pi 的概率他會在相鄰的房間中等可能的選擇一間並沿著走廊過去。這裡的i指的是當期所在房間的序號。在古代建造是一件花費非常大的事,因此每條走廊會連線兩個不同的房間,並且任意兩個房間至多被一條走廊連線。
兩個男孩同時行動。由於走廊很暗,兩人不可能在走廊碰面,不過他們可以從走廊的兩個方向通行。(此外,兩個男孩可以同時地穿過同一條走廊卻不會相遇)兩個男孩按照上述方法行動直到他們碰面為止。更進一步地說,當兩個人在某個時刻選擇前往同一間房間,那麼他們就會在那個房間相遇。
兩個男孩現在分別處在a,b兩個房間,求兩人在每間房間相遇的概率。
第一行包含四個整數,n表示房間的個數;m表示走廊的數目;a,b (1 ≤ a, b ≤ n),表示兩個男孩的初始位置。
之後m行每行包含兩個整數,表示走廊所連線的兩個房間。
之後n行每行乙個至多精確到小數點後四位的實數 表示待在每間房間的概率。
題目保證每個房間都可以由其他任何房間通過走廊走到。
輸出一行包含n個由空格分隔的數字,注意最後乙個數字後也有空格,第i個數字代表兩個人在第i間房間碰面的概率(輸出保留6位小數)
注意最後乙個數字後面也有乙個空格
2 1 1 2
1 20.5
0.5
0.500000 0.500000
對於100%的資料有 n <= 20,n-1 <= m <= n(n-1)/2 概率dp 高斯消元 bzoj3270 博物館
一類成環概率dp的操作模式 有一天petya和他的朋友vasya在進行他們眾多旅行中的一次旅行,他們決定去參觀一座城堡博物館。這座博物館有著特別的樣式。它包含由m條走廊連線的n間房間,並且滿足可以從任何一間房間到任何一間別的房間。兩個人在博物館裡逛了一會兒後兩人決定分頭行動,去看各自感興趣的藝術品。...
bzoj3270博物館 期望概率DP
題目 設計乙個狀態表示兩個人分別在兩個點的狀態,帶個標號num i j 據此得到狀態之間轉移的關係所構成的n元方程,高斯消元求解 要注意起點的概率要 1,而且開始時兩個人在兩個點是有區分的,所以不能 a,b 和 b,a 都加 用scanf會ce,所以改成了快讀和cin 調了一天的才找到錯誤竟然是把d...
bzoj3270 博物館 期望 高斯消元
傳送門本題的點數很少,只有20個 考慮用二元組 s u,v 表示甲在 u 點,乙在 v 點的狀態 那麼可以用 f s 表示狀態 s 出現的概率 不同的 f 之間的轉移就是通過邊 轉移有4種情況 對於 s u,v 來說,有以下四種轉移 轉移一,甲乙都選擇不動,此時從 s 轉移到 s 概率為 p u p...