osu合集(期望dp)

2022-04-10 04:41:03 字數 1370 閱讀 6068

easy

我們設\(f_i\)表示到\(i\)的連續個數平方的期望。 \(g_i\)表示到到\(i\)的連續個數的期望

在維護\(f_i\)的同時維護一下\(g_i\)就行了。

轉移方程: \(g_i\)= \(p_i \times g_\);

\(f_i = p_i \times (f_ + 2 \times g_ + 1) + (1-p_i) \times f_\)

解釋一下第二個方程,

長度有\(p_i\)的概率有\(x\)變為\(x+1\)

那麼分數就會增加\((x+1)^2 - x^2\) 即\(2 \times x - 1\)

再加上有\(1-p[i]\)的概率保持原來的不變,所以就有了上面的方程

#include#include#includeusing namespace std;

char ch;

int n;

double p,g[300010],f[300010];

int main()

printf("%.4f\n",f[n]);

return 0;

}

let's play osu!

和上面那個題差不多。

轉移時維護乙個連續個數的期望和連續個數平方的期望就水過去了。

#include#include#includeusing namespace std;

int n;

double p,f[100010],g[100010];

int main()

printf("%.15lf",f[n]);

return 0;

}

osu!

這個題很上面的兩個題還是有點區別的,但是多想一想也就明白了

當連續的x個個數由\(x\)變為\(x+1\)時

期望得分就會由\(x^3\)變為\((x+1)^3\)

也就是\(3 \times x^2 \times \ 3 \times x + 1\)

轉移的時候維護三個陣列,分別表示連續個數的期望,連續個數平方的期望,和期望得分。

剩下的隨便水水就過了。

#include#include#includeusing namespace std;

int n;

double p[100010],f[100010],g[100010],h[100010];

int main()

printf("%.1lf",f[n]);

return 0;

}

期望題就是想出來與想不出來的區別。

想出來了**也就可以實現出來了。

但是想不出來他就是 爆玲qaq.

洛谷 OSU (期望DP)

題目位址 設 f i 表示以 i 結尾的連續 1 區間的期望貢獻 x 1 g i 表示以 i 結尾的連續 1 區間的期望貢獻 x 2 則有 f i p i f i 1 1 g i p i g i 1 2f i 1 1 因為 x 1 2 x 2 2x 1 類似的,可以設 h i 表示以 i 結尾的連續...

LUOGU P1654 OSU 概率期望

傳送門 解題思路 首先考慮對於乙個點來說,如果這個點是1的話,那麼對於答案來說 ans 1 3 ans 3 3 ans 2 3 ans 1 這對於上乙個答案來說其實貢獻了 3 ans 2 3 ans 1 那麼只需要維護乙個 ans 2 與 ans 的期望,然後轉移到 ans 就行了。include ...

洛谷1654 OSU (期望)

點此看題面 立方的期望顯然不等於期望的立方,這種東西自己舉幾個例子就知道了。考慮我們維護到第 i 個位置為止的答案為 ans i 連續長度期望為 a i 連續長度平方期望為 b i 連續長度立方期望為 c i 一次期望的長度轉移是顯然的 a i a i a 1 對於二次期望,考慮 x 1 2 x 2...