洛谷1654 BZOJ4318 OSU 期望

2021-09-10 19:59:18 字數 1543 閱讀 8690

題目鏈結

題意:有乙個長度為n

nn的序列,每個數字都是0

00或1

11,告訴你每個數是1

11的概率。其中長度為x

xx的連續的一段1

11對答案的貢獻是x

3x^3

x3,求答案的期望。n

<=1

e5

n<=1e5

n<=1

e5,四捨五入保留一位小數。

題解:我們考慮乙個dp。最簡單的dp是n

2n^2

n2的,但是狀態就是n

2n^2

n2級別的,所以沒什麼優化的空間。所以我們考慮直接把期望帶進去計算。我們考慮從i−1

i-1i−

1位置到i

ii這個位置答案期望增加多少。我們設原來的期望連續1

11的長度是x

xx,現在可能變成x+1

x+1x+

1。我們化一下式子可以知道,(x+

1)3−

x3=3

x2+3

x+

1(x+1)^3-x^3=3x^2+3x+1

(x+1)3

−x3=

3x2+

3x+1

,這是權值,再乘上這個位置是1

11的概率,就是期望增加的值。

根據期望的線性性,我們可以把3x2

+3x+

13x^2+3x+1

3x2+3x

+1拆成三個部分,1

11是常數不用管,那麼我們就分別維護出這裡x

xx的期望值和x

2x^2

x2的期望值,就可以算從i−1

i-1i−

1到ii

i的答案增加量了。而這兩個量也很好維護。x

2x^2

x2的期望增加值就用(x+

1)2−

x2

(x+1)^2-x^2

(x+1)2

−x2乘上i

ii是1

11的概率就好了,x

xx的期望增加量直接就是1∗i

1*i1∗

i位置上是1

11的概率。但是注意一下我們更新i

ii處的答案用的是i−1

i-1i−

1處的x

xx與x

2x^2

x2的增加量,因為是之前已有的期望。

這樣就做完了,時間複雜度o(n

)o(n)

o(n)

。**很簡單。

**:

#include

using

namespace std;

int n;

double x[

100010

],y[

100010

],dp[

100010

],a[

100010];

intmain()

printf

("%.1lf\n"

,dp[n]);

return0;

}

洛谷1654 OSU (期望)

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

洛谷p4318 完全平方數

小 x 自幼就很喜歡數。但奇怪的是,他十分討厭完全平方數。他覺得這些數看起來很令人難受。由此,他也討厭所有是完全平方數的正整數倍的數。然而這絲毫不影響他對其他數的熱愛。這天是小x的生日,小 w 想送乙個數給他作為生日禮物。當然他不能送乙個小x討厭的數。他列出了所有小x不討厭的數,然後選取了第 k個數...

洛谷P4318 完全平方數

求自然數中,第 k 個不含平方因子的數 這道題的做法還挺多的 打表,二分,反演.我用的做法是二分 容斥 顯然答案滿足二分性,假設當前檢驗的數為 n 沒有平方因子的數 所有數 乙個質數平方的因子的倍數 兩個質數乘積平方的倍數 三個的.對於乙個數 i 2 可以發現 mu i 就是 i 2 在上面那個式子...