hdu 4336 状态压缩dp

来源:互联网 发布:互联网大数据时代论文 编辑:程序博客网 时间:2024/05/17 09:12
#include<iostream>#include<cmath>#include<cstdio>using namespace std;double p[20];double dp[1<<20];//dp表示当前状态到收集完所需的期望步数int cnt[1<<20];int main(){   int n;   while(cin>>n)   {          double sp=0;          for(int i=0;i<n;i++){cin>>p[i];sp+=p[i];}          dp[(1<<n)-1]=0;          for(int i=(1<<n)-2;i>=0;i--)          {                  double t=sp,sum=1;                  for(int j=0;j<n;j++)                  {                  if((1<<j)&i)t-=p[j];                 else sum+=p[j]*dp[i|1<<j];                 }                 dp[i]=sum/t;          }          printf("%.5lf\n",dp[0]);   }   return 0;}


0 0
原创粉丝点击