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 ...
随机推荐
- jsp 回车代替tab 自动切换text焦点
方法一keyCode (IE11以后失效) <html> <head> <meta http-equiv="Content-Type" content ...
- ios tableview header 透明
当将tableview的style属性设为grouped时,header或footer会变成透明,如果设为plain,header或footer会保持默认颜色
- mouseenter 事件
定义和用法 当鼠标指针穿过元素时,会发生 mouseenter 事件. 该事件大多数时候会与 mouseleave 事件一起使用. mouseenter() 方法触发 mouseenter 事件,或规 ...
- JAVA NIO学习记录2-非阻塞式网络通信
一.阻塞与非阻塞 传统的IO 流都是阻塞式的.也就是说,当一个线程调用read() 或write() 时,该线程被阻塞,直到有一些数据被读取或写入,该线程在此期间不能执行其他任务.因此,在完成网络通信 ...
- 本地Facts
我们可以通过Facts来获取目标主机的系统信息,当这些信息还不能满足我们的功能需要时,可以通过编写自定义的Facts模块来实现.当然,还有一个更简单的实现方法,就是通过本地Facts来实现.只需在目标 ...
- c:forEach varStatus属性
转自:https://blog.csdn.net/jzy23682891/article/details/7075904 c:forEach varStatus属性 current当前这次迭代的(集合 ...
- 迷你MVVM框架 avalonjs 1.4发布
主要带来以下三大改进: 全新的兼容AMD规范requirejs API的加载器 使用gulp进行构建 兼容性更好的触屏模块 最近还修改了avalon.modern bind方法的BUG,自定义过滤器的 ...
- 迷你MVVM框架 avalonjs 学习教程14、事件绑定
之前的章节许多示例代码也或多或少地展示了如何使用ms-click来绑定事件了.能直接在模板上绑定是事件,这也是静态模板与动态绑定的一大区别.ms-click不是简单的onclick的别名,它在内部屏蔽 ...
- 迷你MVVM框架 avalonjs 学习教程13、模板引用
稍为复杂一点的网站都是多个前端工程师合作而成,因此分工是必需的.简单一点的分工就是一个人负责一个频道,某个页面是由一个人全部做的:但如果涉及到一个页面非常复杂,需要多个人同时动工呢?于是到模板的出场时 ...
- 静态网页开发技术-HTML
今天我重新复习了一下静态网页开发技术,概括如下. 一 .HTML文档结构与基本语法 :放置了标签的文本文档,可供浏览器解释执行的网页文件 1.注释标记 2.标记 3.属性 二.基本标记与使用 1.网页 ...