2018.09.23 bzoj1076: [SCOI2008]奖励关(期望+状压dp)
传送门
一道神奇的期望状压dp。
用f[i][j]f[i][j]f[i][j]表示目前在第i轮已选取物品状态为j,从现在到第k轮能得到的最大贡献。
如果我们从前向后推有可能会遇到不合法的情况。
所以我们从后向前推。
这时怎么处理不合法的情况呢?
如果当前这个状态不具备选择k的条件。
那么说明第i+1轮可能具备。
于是f[i][j]+=f[i+1][j]f[i][j]+=f[i+1][j]f[i][j]+=f[i+1][j]
否则当前具备选k的条件。
所以要么当前轮不选,要么选了从f[i+1][j∣(1<<(k−1))]f[i+1][j|(1<<(k-1))]f[i+1][j∣(1<<(k−1))]转移过来。
代码:
#include<bits/stdc++.h>
using namespace std;
double f[105][1<<16];
int K,n,w[16],ban[16];
int main(){
scanf("%d%d",&K,&n);
for(int i=1;i<=n;++i){
scanf("%d",&w[i]);
int tmp;
while(scanf("%d",&tmp)&&tmp)ban[i]|=1<<(tmp-1);
}
int up=1<<n;
for(int i=K;i;--i){
for(int j=0;j<up;++j){
for(int k=1;k<=n;++k){
if((j&ban[k])==ban[k])f[i][j]+=max(f[i+1][j],f[i+1][j|(1<<(k-1))]+w[k]);
else f[i][j]+=f[i+1][j];
}
f[i][j]/=1.0*n;
}
}
printf("%.6lf",f[1][0]);
return 0;
}
2018.09.23 bzoj1076: [SCOI2008]奖励关(期望+状压dp)的更多相关文章
- BZOJ1076 [SCOI2008]奖励关 【状压dp + 数学期望】
1076: [SCOI2008]奖励关 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 3074 Solved: 1599 [Submit][Sta ...
- BZOJ1076: [SCOI2008]奖励关【状压DP+期望DP】
Description 你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随机抛出k次宝物, 每次你都可以选择吃或者不吃(必须在抛出下一个宝物之前做出选择,且现在决定不吃的 ...
- BZOJ_1076_[SCOI2008]奖励关_状压DP
BZOJ_1076_[SCOI2008]奖励关_状压DP 题意: 你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随机抛出k次宝物, 每次你都可以选择吃或者不吃(必须在抛 ...
- 【BZOJ】1076: [SCOI2008]奖励关(状压dp+数学期望)
http://www.lydsy.com/JudgeOnline/problem.php?id=1076 有时候人蠢还真是蠢.一开始我看不懂期望啊..白书上其实讲得很详细的,什么全概率,全期望(这个压 ...
- 【BZOJ1076】[SCOI2008] 奖励关(状压DP)
点此看题面 大致题意:总共有\(n\)个宝物和\(k\)个回合,每个回合系统将随机抛出一个宝物(抛出每个宝物的概率皆为\(1/n\)),吃掉一个宝物可以获得一定的积分(积分可能为负),而吃掉某个宝物有 ...
- bzoj 1076: [SCOI2008]奖励关【状压dp+概率dp】
设f[i][s]为前i步,选的礼物集合为s的方案数,然而并不会转移-- 看了hzwer的blog,发现要倒着转移,然后答案就是f[1][0] 妙啊 #include<iostream> # ...
- bzoj1076: [SCOI2008]奖励关(期望dp+状压dp)
1076: [SCOI2008]奖励关 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2989 Solved: 1557[Submit][Statu ...
- 【题解】 bzoj1076: [SCOI2008]奖励关 (装压+期望dp)
题面戳我 Solution 并不会做,看了下题解大概了解了.期望这个东西好难搞啊qwq 我们定义\(dp[i][j]\)表示第\(i\)步,拿到宝物前的状态为\(j\). 正着来会有很多不合法的情况, ...
- [SCOI2008]奖励关_状压动归_数学期望
Code: #include<cstdio> #include<algorithm> using namespace std; const int maxn = 20; dou ...
随机推荐
- ASP.Net在web.config中设置上传文件的大小方法
修改Webcong文件:<system.web><httpRuntime maxRequestLength="40960" //即40MB,1KB=1024u ...
- jsp访问java变量
jsp页面中javascript访问 java的变量 <%= JAVA变量名%> jsp中嵌入java代码<%java代码%> --变量<% String JAVASOu ...
- myeclipse2016-ci破解疑难杂症问题整理
感谢网上的各位大神,在你们的基础,我又整理了下安装成功的心得,破解不成功时一定注意下红色字体内容,避免被坑,都是教训. 试了网上N种破解工具+方法,Myeclipse 2016装了很多遍(本人官网下载 ...
- Mysql 函数, 存储过程, 任务调度
官网链接: https://dev.mysql.com/doc/refman/5.7/en/stored-programs-views.html
- 基于OpenGL编写一个简易的2D渲染框架-04 绘制图片
阅读文章前需要了解的知识,纹理:https://learnopengl-cn.github.io/01%20Getting%20started/06%20Textures/ 过程简述:利用 FreeI ...
- javascript的typeof返回哪些数据类型
javascript的typeof返回哪些数据类型 1.返回数据类型 undefined string boolean number symbol(ES6) Object Function 2.强制类 ...
- tensorflow Process finished with exit code 137 (interrupted by signal 9: SIGKILL) 错误
Process finished with exit code 137 (interrupted by signal 9: SIGKILL) 在使用tensorflow自带的数据集做手写数字识别的时候 ...
- Chi-Square Statistic/Distribution
. 1.What is a Chi Square Test? 卡方检验有两种类型.两者使用卡方统计量和分布的目的不同. 第一种:卡方拟合优度检验确定样本数据是否与总体匹配.(这里不介绍) 第二种:独立 ...
- ThreadPoolExecutor常识
线程池技术在并发时经常会使用到,java中的线程池的使用是通过调用ThreadPoolExecutor来实现的.ThreadPoolExecutor提供了四个构造函数,最后都会归结于下面这个构造方法: ...
- cdoj203-Islands 【并查集】
http://acm.uestc.edu.cn/#/problem/show/203 Islands Time Limit: 30000/10000MS (Java/Others) Memor ...