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...