2019南京網路賽 D Robots 期望dp

2021-09-26 18:30:15 字數 1532 閱讀 6249

給出乙個n≤4

e5,m

≤5e5

n\leq4e5,m\leq5e5

n≤4e5,

m≤5e

5的有向圖,並且保證起點1

11是唯一的,終點n

nn也是唯一的,每次有等同的概率停留在原地或者走到下乙個點,每次走到新的點要耗費一天的代價,走到每個點的得分是走到這個點的天數。求問最終走到終點的得分的期望。

可以拆成兩部分來做。e1(

u)

e_(u)

e1​(u)

表示從u

uu到終點的天數期望。u轉移有e1(

u)=e

1(u)

deg[

u]+1

+∑e1

(v)d

eg[u

]+1+

1e_(u)=\frac(u)}+\frac(v)}+1

e1​(u)

=deg

[u]+

1e1​

(u)​

+deg

[u]+

1∑e1

​(v)

​+1,然後再去求e2(

u)

e_(u)

e2​(u)

表示u

uu到終點的的得分期望。e2(

u)=e

2(u)

deg[

u]+1

+∑e2

(v)d

eg[u

]+1+

e1(u

)e_(u)=\frac(u)}+\frac(v)}+e_(u)

e2​(u)

=deg

[u]+

1e2​

(u)​

+deg

[u]+

1∑e2

​(v)

​+e1

​(u)

。記憶化搜尋轉移就好了。

#includeusing namespace std;

typedef long long ll;

const int inf=0x3f3f3f3f;

const ll inf=long_long_max;

const int n=1e5+7;

vectorg[n];

double dp1[n],dp2[n];

int deg[n];

int n,m;

double dfs1(int u)

return dp1[u]=ans/deg[u]+1.0+1.0/deg[u];

}double dfs2(int u)

return dp2[u]=ans/deg[u]+dp1[u]+dp1[u]/deg[u];

}int main()

for(int i=1;i<=m;i++)

dfs1(1);

double ans=dfs2(1);

printf("%.2lf\n",ans);

} return 0;

}

2019 南京網路賽 B F H

其實這場我爆零了,都是隊友a的題,現在滾過來補題了。可補題 a先欠著 這個題運用了擴充套件尤拉降冪 於是我o n 的去求每一層的底數和冪數?成功超時。然後搜題解 waht?類似減了一下枝就可以了?當時隊友告訴我用什麼快速冪套快速冪?這種題可以快速冪套快速冪?成功被隊友帶歪,怎麼說呢,自己也菜,隊友也...

2019南京網路賽 B robots

給乙個 dag dagda g,乙個機械人從 1 11 走到 n nn 每一步會等概率走向某乙個後繼或不動,每一步 包括不動 的花費是當前的步數。求從起點走到終點的期望花費期望。期望 dp。f u f u f u 表示從 u uu 出發的期望步數,g u g u g u 表示從 u uu 出發的期望...

2019 南京網路賽 Robots

1.做這個題目之前,首先可以做一下綠豆蛙的歸宿 這道題目。二者幾乎一樣。其實二者的核心思想都是倒著推期望,為什麼會倒著推?其實也有很多種解釋,有句話說得很好,其實就是詮釋了為什麼期望要倒著dp。終點是概率的結束,是期望的開始。2.綠豆蛙的歸宿 解釋一下就是當前節點的值由所有和它相連的節點的值貢獻而來...