bzoj 1076(状压dp)(期望dp)
来源:互联网 发布:js隐式类型转换 编辑:程序博客网 时间:2024/06/07 04:48
传送门
题解:dp[i][j]表示第i轮状态为j(状态中为1的位表示当前物品还没被取走)的最大期望得分。为了防止从无效状态转移至有效状态,采用倒推法,从已知的有效状态往回推,具体注释在代码中。
P.S.不写memset可以快接近一倍,但是为了思维严密性,还是写一个,反正都能过(´∇`)
注意:由于吃过的宝物可以再吃(只有前提集合满足),所以if语句不能再加如下条件:(j&(1<<(k-1)))==0
#include<bits/stdc++.h>using namespace std;const int MAXN=17;int K,n,temp;int val[MAXN],st[MAXN];double dp[102][1<<17];int main() {// freopen("bzoj 1076.in","r",stdin); scanf("%d%d",&K,&n); for (int i=1;i<=n;++i) { scanf("%d%d",&val[i],&temp); while (temp) st[i]+=(1<<(temp-1)),scanf("%d",&temp); } memset(dp,0,sizeof(dp)); for (int i=K;i;--i) for (int j=0;j<=(1<<n)-1;++j) { for (int k=1;k<=n;++k) if ((st[k]&j)==st[k])//st[k]为j的子集,为有效状态 dp[i][j]+=max(dp[i+1][j],dp[i+1][j|(1<<(k-1))]+val[k]); else dp[i][j]+=dp[i+1][j]; dp[i][j]/=n;//概率为1/n } printf("%.6lf\n",dp[1][0]); return 0;}
阅读全文
0 0
- bzoj 1076(状压dp)(期望dp)
- bzoj 3450(期望dp)
- bzoj 4318(期望dp)
- bzoj 3036(期望dp)
- bzoj 1419(期望dp)
- bzoj 1076(期望与DP+状压)
- bzoj 1076 奖励关 状压+期望dp
- 【bzoj 1426】收集邮票(期望DP)
- bzoj 1076: [SCOI2008]奖励关 (期望dp)
- BZOJ 1076 奖励关 (状压期望dp)
- BZOJ 题目1076: [SCOI2008]奖励关(状压DP+期望,反向推)
- BZOJ 1076: [SCOI2008]奖励关 状压,期望DP
- BZOJ 1076 [SCOI2008]奖励关 状压+期望DP 题解
- [BZOJ]1076 [SCOI2008] 奖励关 状压dp + 期望
- 【BZOJ 1076】 [SCOI2008]奖励关 期望dp
- bzoj 4720/Luogu 1850(期望dp)(NOIP 2016)
- bzoj 1426(期望dp)(公式推导)
- bzoj 3450: Tyvj1952 Easy (概率与期望dp)
- Pat(A) 1092. To Buy or Not to Buy (20)
- java读取各类型的文件。
- C++ Solution of LeetCode 461 Hamming Distance
- 报到文章
- Vue.js的helloworld-demo
- bzoj 1076(状压dp)(期望dp)
- JVM调优总结(含tomcat调优配置)
- python---列表的切片、增加、删除、修改、成员关系、列表推导、排序翻转
- 五、进程管理
- Scrum中的团队速率
- Python时间戳转Java时间戳
- 谈谈对HTML5的认识。
- python web py入门-2-显示一个demo网页
- AOP重点操作术语分析