bzoj2201 彩色圓環(期望dp)

2021-08-14 11:42:10 字數 1231 閱讀 2722

dp[i][1/0]表示長度為i的序列,第乙個和第二個球顏色不同,第乙個和最後乙個顏色相同/不同 的期望美觀程度

定義很繞,沒辦法呀…畢竟是個環。

p[i]表示i個連續的球顏色相同的概率

列舉最後一段的長度j來o(n)轉移, dp

[i][

0]=∑

i−1j

=1p[

j]∗j

∗dp[

i−j]

[0]∗

(1−2

/m)+

p[j]

∗j∗d

p[i−

j][1

]∗(1

−1/m

) dp

[i][

1]=∑

i−1j

=1p[

j]∗j

∗dp[

i−j]

[0]∗

1/m

因為是個環,所以我們要欽定第乙個球,然後列舉第乙個球所在段的長度i 來統計答案,貢獻就是i∗

i∗p[

i]∗d

p[n−

i+1]

。如何理解呢?因為是個環,所以覆蓋第乙個球的長度為i的區間有i個,我們把這個區間縮成乙個點,期望長度就是dp[n-i+1]了。特別的,還要加上全是乙個顏色的情況,即p[n]*n。

#include 

#include

#include

using

namespace

std;

#define ll long long

#define inf 0x3f3f3f3f

#define n 210

inline

int read()

while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar();

return x*f;

}int n,m;

double dp[n][2],ans=0,p[n];//p[i]--successive i same color

//dp[i]表示長度為i的序列,第乙個和第二個球顏色不同,第乙個和最後乙個顏色相同(不同)的期望美觀程度

int main()

}ans+=p[n]*n;

for(int i=1;i1][0];

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

return

0;}

BZOJ2201 彩色圓環

2201 彩色圓環 ut僅有一行,該行給出依次兩個正整數n,m,分別表示寶石的個數和寶石在變化時可能變成的顏色種類數。ou tput o ut put應僅有一行,該行給出乙個實數e r 表示圓環的 美觀程度 的期望值。sa mple s am plein put inp ut8 1 sa mple ...

bzoj2201 彩色圓環 概率dp

僅有一行,該行給出依次兩個正整數n,m,分別表示寶石的個數和寶石在變化時可能變成的顏色種類數。應僅有一行,該行給出乙個實數e r 表示圓環的 美觀程度 的期望值。8 18.00000 題解 先考慮序列.設f i 0 1 表示前i個珠子,最後1個珠子和第1個珠子顏色不同 相同 的期望值.設g i 表示...

bzoj 2178 圓的面積並

給出n個圓,求其面積並 先給乙個數字n n 1000 接下來是n行是圓的圓心,半徑,其絕對值均為小於1000的整數 面積並,保留三位小數 自適應辛普森。留個模板好了 include include include include includeusing namespace std const do...