HDU 4336 Card Collector
来源:互联网 发布:中关村数据恢复价格 编辑:程序博客网 时间:2024/04/28 23:54
用状态压缩来表示当前已经取的卡片,关键在于dp[i]的转移,dp[i]是由某个状态取一张牌转移过来的,所以考虑状态。
可能由没有卡的包和没有起作用的牌转移过来(i里面二进制为0的位置),也可能是i里面的1由0变成1的。
所以方程可以写成:dp[i]=(s1+s2)*dp[i]+sigma(dp[i^(1<<j)]*a[j])+1,其中s2是i为0处概率的和.
代码如下:
#include<stdio.h>#include<algorithm>#include<iostream>#include<string.h>#define rep(a,b,i) for(i=a;i<=b;i++)using namespace std;double dp[1<<20];double a[21];int main(){ int i,j,n,p; double s1,s2,s3; while(cin>>n){ p=1<<n; memset(dp,0,sizeof(dp)); s3=0; for(i=0;i<n;i++){ scanf("%lf",&a[i]); s3+=a[i]; } s3=1-s3; for(i=1;i<p;i++){ s1=0; s2=0; for(j=0;j<n;j++){ if(i&(1<<j)){ s1+=dp[i^(1<<j)]*a[j]; } if(!(i&(1<<j))) s2+=a[j]; } s2+=s3; dp[i]=(s1+1)/(1-s2); } printf("%.4lf\n",dp[p-1]); }}
0 0
- HDU 4336 - Card Collector
- hdu 4336 Card Collector
- hdu 4336 Card Collector
- HDU 4336 Card Collector
- hdu 4336 Card Collector
- hdu 4336 Card Collector
- hdu 4336 Card Collector
- HDU 4336 Card Collector
- HDU 4336 Card Collector
- HDU 4336 Card Collector
- hdu 4336 Card Collector
- hdu 4336 Card Collector(期望)
- hdu 4336 Card Collector[期望]
- hdu 4336 Card Collector (容斥原理)
- hdu 4336 Card Collector(概率DP)
- 期望dp-hdu-4336-Card Collector
- hdu 4336 Card Collector (概率dp)
- [容斥]HDU 4336 Card Collector
- DataTable中数据记录的排序、检索、合并、分页、统计
- POJ 2586 Y2K Accounting Bug
- 最大子向量和
- 减少电脑辐射
- magento getBaseUrl()获取地址
- HDU 4336 Card Collector
- 刘芹:我从雷军和周鸿祎身上学到的几点创业经验
- UVa 714 & POJ 1505 & ZOJ 2002 - Copying Books
- 排序算法
- 项目三
- oracle lock 06 - dml locks
- HDU1002--A + B Problem II
- uva 10055 uva 10071 uva 10300(水题两三道)
- 修改hosts不必重启 立刻生效