【BZOJ1076】奖励关(动态规划,数学期望)
【BZOJ1076】奖励关(动态规划,数学期望)
题面
题解
我也是看了题解才会做
看着数据范围,很容易想到状压
然后,设\(f[i][j]\)表示当前第\(i\)轮,状态为\(j\)的期望
枚举当前掉出来哪一个物品
然后。。。。怎么转移???
当前物品如果原来出现过,,我也不知道出现了几次呀。。。
根本找不到上一次的状态
然后\(hzwer\)告诉我们,倒着来
设这样的话,状态倒过来推,我们就只需要往上加东西的状态即可
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<set>
#include<map>
#include<vector>
#include<queue>
using namespace std;
#define MAX 120
inline int read()
{
int x=0,t=1;char ch=getchar();
while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();
if(ch=='-')t=-1,ch=getchar();
while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar();
return x*t;
}
int K,n;
int W[MAX];
int way[MAX];
double f[MAX][1<<16];
int main()
{
K=read();n=read();
for(int i=1;i<=n;++i)
{
W[i]=read();
while(233)
{
int u=read();
if(!u)break;
way[i]|=(1<<(u-1));
}
}
for(int i=K;i;--i)
for(int j=0;j<(1<<n);++j)
{
for(int k=1;k<=n;++k)
if((j&way[k])==way[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]/=n;
}
printf("%.6lf\n",f[1][0]);
return 0;
}
【BZOJ1076】奖励关(动态规划,数学期望)的更多相关文章
- 【BZOJ-1076】奖励关 概率与期望 + 状态压缩DP
1076: [SCOI2008]奖励关 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1602 Solved: 891[Submit][Status ...
- bzoj1076 奖励关 期望dp
题目传送门 题目大意:总共有k次弹出宝物的机会,宝物共有n种,弹出不同的宝物的概率相同的,是每个宝物都有价值,和选择这个宝物的限制(必须具有特定的宝物),问最后的最优期望是多少. 思路:“正向推概率, ...
- [BZOJ1076] 奖励关
Description 你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随机抛出k次宝物, 每次你都可以选择吃或者不吃(必须在抛出下一个宝物之前做出选择,且现在决定不吃的 ...
- bzoj1076 奖励关(概率dp)(状态压缩)
BZOJ 1076 [SCOI2008]奖励关 Description 你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随机抛出k次宝物,每次你都可以选择吃或者不吃(必须 ...
- Codeforces 839C Journey - 树形动态规划 - 数学期望
There are n cities and n - 1 roads in the Seven Kingdoms, each road connects two cities and we can r ...
- bzoj 1076 奖励关 状压+期望dp
因为每次选择都是有后效性的,直接dp肯定不行,所以需要逆推. f[i][j]表示从第i次开始,初始状态为j的期望收益 #include<cstdio> #include<cstrin ...
- BZOJ 1076 奖励关(状压期望DP)
当前得分期望=(上一轮得分期望+这一轮得分)/m dp[i,j]:第i轮拿的物品方案为j的最优得分期望 如果我们正着去做,会出现从不合法状态(比如前i个根本无法达到j这种方案),所以从后向前推 如果当 ...
- BZOJ1076奖励关题解
链接 很容易想到状压,f[i][s]表示前i个选择的箱子集合为s的最大期望 果断wa了,因为有一些不合法的状态,譬如f[1][1111001]这样的状态 这样的状态不好排除,所以改用倒推 用f[i][ ...
- BZOJ1076 [SCOI2008]奖励关 【状压dp + 数学期望】
1076: [SCOI2008]奖励关 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 3074 Solved: 1599 [Submit][Sta ...
随机推荐
- gitlab wiki 500
记录一次使用gitlab各种报500的问题,并怎么解决的描述下 一.问题背景 描述我第一次使用wiki的步骤: 二.问题描述 之后我进行任何合法的操作(创建页面使用全英文名称:页面不做任何修改,只是点 ...
- Mac系统下XAMPP的简单使用
XAMPP简单使用的方法使用方法 XAMPP的简介即应用在博客园也有 1.安装完成后打开manager-osx.app 把Manager Servers下的三个server打开(使之变绿如下) 第一个 ...
- Math.abs(~2018),掌握规律!
Math.abs(~2018) 这要用到一些计算机的基础知识. Math.abs(x)指的是返回一个数的绝对值,而关键在"~2018",这是取反操作符,故取相反数得结果为-2018 ...
- 【实用】需要收藏备用的JQuery代码片段
1 元素屏幕居中 jQuery.fn.center = function () { this.css("position","absolute"); this. ...
- React设计思想
熟悉一个新技术的关键是熟悉他的特色和理念 React框架本身和我们常用的JavaScript MVC框架,如:AngularJS,Backbone,Ember等,没有直接的可比性.在React的官方博 ...
- Python比较运算符
判断两个对象之间的关系,和条件选择和循环结合使用的 以下假设变量a为10,变量b为20: 示例1:输入三个互不相等的整数,按照从小到大输出 num01,num02,num03 = eval(input ...
- 用node.js搭建本地服务器
我的第一篇笔记来写写node.js,我对node.js的并不是很了解,基本的项目路径变换还是会的.原先我下载node.js就是我想学vue.js,后来因为工作的繁忙搁浅了我的计划.最近在学习phase ...
- 使用Vue和thrift建立前后端交互的demo
初识thrift thrift 是 facebook 于2007年开发的一款跨平台 RPC(Remote Procedure Call) 软件框架, 它可以在多种平台上进行无缝交互,数据传输使用二进制 ...
- Qt 开发 MS VC 控件终极篇
Qt 开发 MS VC 控件终极篇 1. 使用 MSVC2015 通过项目向导创建 Qt ActiveQt Server 解决方案 项目配置:以下文件需要修改 1. 项目属性页->项目属性-&g ...
- soj4538: ShouHuXueJie Problem DFS
类似八皇后,暴力深搜. 其实我觉得这题目叙述不是很好,如果答案为0呢,难道不输出? AC代码: #include<cstdio> #include<cstring> #incl ...