bzoj 1076 奖励关 状压+期望dp
2017-07-09 19:48
239 查看
因为每次选择都是有后效性的,直接dp肯定不行,所以需要逆推。
f[i][j]表示从第i次开始,初始状态为j的期望收益
f[i][j]表示从第i次开始,初始状态为j的期望收益
#include<cstdio> #include<cstring> #include<iostream> using namespace std; int bit[18],K,n,aa,ned[18],a[18]; double f[105][1<<17]; int main() { bit[0]=1; for(int i=1;i<=16;i++) bit[i]=bit[i-1]<<1; scanf("%d%d",&K,&n); for(int i=1;i<=n;i++){ scanf("%d",&a[i]); scanf("%d",&aa); while(aa){ ned[i]|=bit[aa-1]; scanf("%d",&aa); } } for(int i=K;i>=1;i--) for(int j=0;j<bit ;j++){ for(int k=1;k<=n;k++) { if((j&ned[k])==ned[k]) f[i][j]+=max(f[i+1][j],f[i+1][j|bit[k-1]]+a[k]); else f[i][j]+=f[i+1][j]; } f[i][j]/=n; } printf("%0.6lf\n",f[1][0]); return 0; }
相关文章推荐
- BZOJ 1076: [SCOI2008]奖励关 [DP 期望 状压]
- bzoj1076 奖励关SCOI2008 状压与期望DP
- bzoj 1076 奖励关 状压+期望dp
- bzoj1076 [SCOI2008]奖励关 状压+期望dp
- BZOJ 1076: [SCOI2008]奖励关 状压,期望DP
- BZOJ 1076 SCOI2008 奖励关 期望状压DP
- 【BZOJ1076】【SCOI2008】奖励关(DP、期望、状压)
- BZOJ 1076 [SCOI2008]奖励关 状压+期望DP 题解
- BZOJ 1076 奖励关 (状压期望dp)
- BZOJ1076:奖励关(状压期望dp)
- [BZOJ1076][SCOI2008]奖励关(状压DP)
- 【BZOJ 1076】 [SCOI2008]奖励关 期望dp
- BZOJ 1076([SCOI2008]奖励关-期望dp-从后向前)
- 【BZOJ1076】【SCOI2008】奖励关(期望+状压dp)
- [bzoj1076][SCOI2008]奖励关 状压DP
- bzoj 1076(状压dp)(期望dp)
- 【bzoj1076】[SCOI2008]奖励关 状压DP
- 【bzoj1076】【SCOI2008】【奖励关】期望最优值dp
- [BZOJ 1076][SCOI2008]奖励关:状压DP
- bzoj1076: [SCOI2008]奖励关(期望dp+状压dp)