LG P2473 [SCOI2008]奖励关
题目链接:P2473 [SCOI2008]奖励关
有n个宝物 每次等概率抛出其中之一
一共抛出k次
每个宝物有一个价值 和一个前提集合
只有集齐了集合中的所有宝物 才可以领取这个宝物
这个n长得很状压啊
对于负价值宝物
我们计算它本身的贡献与它带来的期望贡献
来判定是否可取
对每一个宝物记录它自己的贡献
最后求和
2 ^ 15 = 32768
由于为什么不是正向 是为了避开在第i轮状态S不合法的情况
这就是本题的思维瓶颈
所以逆推又避开了这个坑
三重循环 外面两重分别是这两维
第三重枚举第1~n个物品
若状态j中有物品k需要的所有物品
那么它的价值就是取或不取的最大值
max(f[i + 1][j], f[i + 1][j | (1 << k)] + w[k])
没有就只能不取
f[i + 1][j]
每个状态转移完除以n
#include <cstdio>
#include <algorithm>
#include <cstdlib>
#include <cmath>
using namespace std;
const int N = ;
const int M = ;
int inc[M + ];
double w[M + ];
int n, m;
double f[N][ << M]; int main(){
scanf("%d%d", &m, &n);
for(int i = , x; i <= n; i++){
scanf("%lf", &w[i]);
while(scanf("%d", &x) && x)
inc[i] |= ( << x);
}
int lb;
for(int i = m; i >= ; i--)
for(int j = ; j < ( << (n + )); j++){
for(int k = ; k <= n; k++){
if((j & inc[k]) == inc[k]){
f[i][j] += max(f[i + ][j], f[i + ][j | ( << k)] + w[k]);
}
else f[i][j] += f[i + ][j];
}
f[i][j] /= (1.0 * n);
}
printf("%.6lf", f[][]);
return ;
}
LG P2473 [SCOI2008]奖励关的更多相关文章
- P2473 [SCOI2008]奖励关(期望)
P2473 [SCOI2008]奖励关 $n<=15$,显然的状压 设$f[i][w]$表示前$i$轮,状态$w$的最大期望 蓝后我们发现一个问题:$f[i][w]$可能是非法的 于是我们从$f ...
- 洛谷 P2473 [SCOI2008]奖励关 解题报告
P2473 [SCOI2008]奖励关 题目描述 你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随机抛出\(k\)次宝物,每次你都可以选择吃或者不吃(必须在抛出下一个宝 ...
- Luogu P2473 [SCOI2008]奖励关
比较恶心的概率(期望)+状压DP,想正推2H的我瑟瑟发抖 由于数据范围不大,因此我们可以直接状压每个宝物取或不取的情况,设\(f_{i,j}\)表示前\(i\)轮且宝物是否取过的状态为\(j\)时的方 ...
- P2473 [SCOI2008]奖励关
思路 n<=15,所以状压 因为求期望,所以采用逆推的思路,设\(f[i][S]\)表示1~i的宝物获得情况是S,i+1~k的期望 状态转移是当k可以取时,\(f[i][S]+=max(f[i+ ...
- 洛谷 P2473 [SCOI2008]奖励关(状压dp+期望)
题面 luogu 题解 \(n \leq 15\) 状压 \(f[i][S]\)表示第\(i\)轮,吃过的集合为\(S\) 正着转移好像有点复杂 考虑逆推转移(正着转移应该也行) \(f[i][S]\ ...
- 洛谷P2473 [SCOI2008]奖励关(期望+状压)
传送门 我数学期望还是太差了…… 先考虑状压模型,设$dp[i][S]$表示第$i$轮,当前宝物状态为$S$,能获得的最大期望分数 然而这个模型有一个问题,第$i$轮不一定能达到状态$S$ 那么考虑转 ...
- 洛谷 P2473 [SCOI2008]奖励关 ( 期望DP )
题目链接 题意 : 中文题.点链接 分析 : 第一道有关概率期望的DP 有个大部分情况下通用的结论 概率正推.期望反推 原因不明.其实是没有查到较好的解释 这题由于有一些取物品的先决条件在这里 而且观 ...
- 【洛谷】2473:[SCOI2008]奖励关【期望DP(倒推)】
P2473 [SCOI2008]奖励关 题目背景 08四川NOI省选 题目描述 你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随机抛出k次宝物,每次你都可以选择吃或者不 ...
- 【BZOJ1076】[SCOI2008]奖励关 状压DP+期望
[BZOJ1076][SCOI2008]奖励关 Description 你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随机抛出k次宝物,每次你都可以选择吃或者不吃(必须 ...
随机推荐
- c++入门之初话结构体
结构体是一种具有一定数据结构思想的数据类型,我们在对待结构体的时候,用该从数据结构的思想去审视结构体.下面给出结构体的定义 struct mystruct {]; int score; double ...
- R语言
什么是R语言编程? R语言是一种用于统计分析和为此目的创建图形的编程语言.不是数据类型,它具有用于计算的数据对象.它用于数据挖掘,回归分析,概率估计等领域,使用其中可用的许多软件包. R语言中的不同数 ...
- pycharm异常问题之Unable to save settings: Failed to save settings. Please restart PyCharm
pycharm异常之Unable to save settings: Failed to save settings. Please restart PyCharm 今天一不小心将电脑关了,但是关机之 ...
- 学习memcache
本文参考了菜鸟教程中的内容. 安装 安装memcache的时候,请切换为root用户 root@centos # wget http://www.memcached.org/files/memcach ...
- C#复习笔记(5)--C#5:简化的异步编程(异步编程的深入分析)
首先,阐明一下标题的这个“深入分析”起得很惭愧,但是又不知道该起什么名字,这个系列也主要是做一些复习的笔记,供自己以后查阅,如果能够帮助到别人,那自然是再好不过了. 然后,我想说的是异步方法的状态机真 ...
- vue实现双向数据绑定之Object.defineProperty()篇
前言 vue.js中使用ES5的Object.defineProperty()实现数据的双向绑定 Object.defineProperty()原理 Object.defineProperty()可以 ...
- package-lock.json和package.json的作用
转自:https://www.cnblogs.com/cangqinglang/p/8336754.html package-lock.json的作用就是锁定安装依赖时包的版本,并且需要上传到git, ...
- 基于vue-cli,sass,vant的移动端项目
项目架构 开始 vue init webpack 项目名称 //新建项目,cd进入新项目 npm install axios //先安装! ...
- Angular 双向数据绑定
<!DOCTYPE html><html ng-app="myApp"><head lang="en"> <meta ...
- 剑指offer(15)
题目: 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). 书中的思路: 按照这个思路我们很容易写出以下代码: import java.util.S ...