[TS-A1489][2013中国国家集训队第二次作业]抽奖[概率dp]

时间:2023-03-09 14:33:09
[TS-A1489][2013中国国家集训队第二次作业]抽奖[概率dp]

概率dp第一题,开始根本没搞懂,后来看了09年汤可因论文才基本搞懂,关键就是递推的时候做差比较一下,考虑新加入的情况对期望值的贡献,然后推推公式(好像还是不太会推qaq...)

 #include <bits/stdc++.h>

 using namespace std;

 int    n,m;
long double a[]; long double POW(const long double t,int b)
{
long double r=,base=t;
while(b)
{
if(b&)r*=base;
base*=base;
b>>=;
}
return r;
} long double Calc1()
{
long double temp=;
for(int i=;i<=n;++i)temp+=a[i]*a[i];
return (double)m*(m-)*temp+m;
} long double Calc2()
{
long double temp=;
for(int i=;i<=n;++i)temp+=POW(-a[i],m);
return (double)n-temp;
} int main()
{
int i;
int Sum=;
scanf("%d%d",&n,&m);
for(i=;i<=n;++i)scanf("%Lf",&a[i]),Sum+=a[i];
for(i=;i<=n;++i)a[i]=a[i]/Sum;
printf("%.2Lf\n%.2Lf\n",Calc1(),Calc2());