jzoj4890 隨機遊走

2021-07-24 13:33:48 字數 1130 閱讀 7169

給出一棵樹,邊權為一,乙個點走到相鄰點的概率相等,求一對點對期望最多走多少步能到達。可以推出走過一條邊的期望,考慮lca為i的路徑貢獻,找到走到i和從i出發不同子樹和最遠的路徑,和答案取max即可。

#include#include#include#define ll long long

#define min(a,b) ((ab)?a:b)

#define fo(i,j,k) for(int i=j;i<=k;i++)

#define fd(i,j,k) for(int i=j;i>=k;i--)

using namespace std;

int const maxn=1e5+1,maxm=20+1,mod=998244353,size=1048576;

int n,gra,ans,begin[maxn+10],f[maxn+10],g[maxn+10],

du[maxn+10],to[maxn*2+10],next[maxn*2+10];

void insert(int u,int v)

void dfs(int now,int pre)

}void dfss(int now,int pre)

}void dfsss(int now,int pre)

int f1=0,f2,f3=0,f4,g1=0,g2,g3=0,g4;

for(int i=begin[now];i;i=next[i])

if(to[i]!=pre)else

if(f[to[i]]>f3)

if(g[to[i]]>g1)else

if(g[to[i]]>g3)

}if(f[now]==1)return;

if(f2!=g2)ans=max(ans,f1+g1);

if(f4!=g2)ans=max(ans,f3+g1);

if(f2!=g4)ans=max(ans,f1+g3);

f[now]+=f1;g[now]+=g1;

}int main()

dfs(1,0);

dfss(1,0);

dfsss(1,0);

printf("%.5lf",(double)ans);

return

0;}

Jzoj4890 隨機遊走

今天切了一道期望dp的難 shui 題,寫寫這一道更難的題 yjc最近在學習圖的有關知識。今天,他遇到了這麼乙個概念 隨機遊走。隨機遊走指每次從相鄰的點中隨機選乙個走過去,重複這樣的過程若干次。yjc很聰明,他很快就學會了怎麼跑隨機遊走。為了檢驗自己是不是歐洲人,他決定選一棵樹,每條邊邊權為1,選一...

初識隨機遊走

隨機遊走 random walk 又稱隨機游動或隨機漫步。在我們生活中處處都存在著與random walk有關的自然現象,例如氣體分子的運動,滴入水中的墨水,氣味的擴散等 如圖1.4 random walk是擴散過程的基礎,因此它被廣泛地用於對物理和化學等擴散現象的模擬上。此外,random wal...

064 隨機遊走

隨機遊走模擬 模擬醉漢隨機遊走,醉漢的起點在 25 25 並且在周圍徘徊 include irvine32.inc walkmax 50startx 25starty 25 定義結構體 drunkardwalk struct path coord walkmax dup 0,0 pathsused ...