HDU 4336 Card Collector
2018-04-28 15:05
148 查看
题意
给n张卡片,每张卡片都有出现的概率,求收集到全部的卡片的期望次数。
思路
状压dp。dp[i] 表示收集了i张,的期望次数。dp
=0;可能自己转移到自己,解一下方程。
记zz的bug:1、1<<20在计算器中算完了之后是1048576,然后就少看了一位,开了110000,然后就一直 Runtime Error (ACCESS_VIOLATION)。2、千万不要看到样例是3位,然后就输出了3位。。。
#include<cstdio> #include<algorithm> #include<cstring> #include<iostream> #include<cmath> using namespace std; const int N = (1<<21)+10; double p[30],dp ; int main() { int n; while (~scanf("%d",&n)) { for (int i=1; i<=n; ++i) scanf("%lf",&p[i]); int t = (1 << n) - 1; dp[t] = 0; for (int s=t-1; s>=0; --s) { double tmp = 0,p0 = 0; for (int i=1; i<=n; ++i) { if (s & (1<<(i-1))) continue; tmp += dp[s | (1<<(i-1))] * p[i]; p0 += p[i]; } dp[s] = (tmp+1.0)/p0; } printf("%lf\n",dp[0]); } return 0; }
相关文章推荐
- HDU 4336 Card Collector(动态规划-概率DP)
- HDU 4336 Card Collector(状态压缩dp+概率dp)
- hdu 4336 Card Collector(期望+状压DP)
- hdu 4336 Card Collector(概率dp, 容斥原理)
- [HDU] 4336 Card Collector 期望dp
- HDU 4336 Card Collector(容斥原理 or 状压求期望dp)
- hdu 4336 Card Collector
- Card Collector - HDU 4336 状压期望dp
- 期望dp-hdu-4336-Card Collector
- HDU 4336 Card Collector (容斥原理||概率DP)
- HDU 4336 Card Collector
- HDU-4336 Card Collector(状压概率DP||容斥原理)
- [HDU 4336] Card Collector (状态压缩概率dp)
- hdu 4336 Card Collector (概率与期望+状压DP)
- hdu 4336 Card Collector
- hdu 4336 Card Collector
- HDU 4336 Card Collector (期望DP+状态压缩 或者 状态压缩+容斥)
- HDU 4336 Card Collector (状压+概率DP)
- HDU-4336 Card Collector 概率DP
- ★HDU 4336 Card Collector 详细题解(状压求期望)