BZOJ1076奖励关题解
很容易想到状压,f[i][s]表示前i个选择的箱子集合为s的最大期望
果断wa了,因为有一些不合法的状态,譬如f[1][1111001]这样的状态
这样的状态不好排除,所以改用倒推
用f[i][s]表示i-1的选择集合为s的,i到k的最大期望
转移时枚举i处的选择,如果可以选该箱子,则为f[i+1][s|(1<<j)]
如果不选则为f[i+1][s]判断一下可行性然后取max就好了
# include<iostream>
# include<cstdio>
# include<algorithm>
# include<cmath>
# include<cstring>
using namespace std;
const int mn = ;
double f[mn][<<];
int n,k,val[mn],sit[mn];
int main()
{
scanf("%d%d",&k,&n);
for(int i=;i<=n;i++)
{
int t;
scanf("%d%d",&val[i],&t);
while(t)
{
sit[i]+=(<<(t-));
scanf("%d",&t);
}
}
for(int i=k;i>=;i--)
{
for(int j=;j<(<<n);j++)
{
for(int s=;s<=n;s++)
if((sit[s] & j) == sit[s])
f[i][j]+=max(f[i+][j],f[i+][j | (<<(s-))]+val[s]);
else
f[i][j]+=f[i+][j];
f[i][j]=f[i][j]/(1.0*n);
}
}
printf("%.6lf",f[][]);
return ;
}
BZOJ1076奖励关题解的更多相关文章
- BZOJ1076:[SCOI2008]奖励关——题解
http://www.lydsy.com/JudgeOnline/problem.php?id=1076 https://www.luogu.org/problemnew/show/P2473 你正在 ...
- [BZOJ1076] 奖励关
Description 你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随机抛出k次宝物, 每次你都可以选择吃或者不吃(必须在抛出下一个宝物之前做出选择,且现在决定不吃的 ...
- bzoj1076 奖励关 期望dp
题目传送门 题目大意:总共有k次弹出宝物的机会,宝物共有n种,弹出不同的宝物的概率相同的,是每个宝物都有价值,和选择这个宝物的限制(必须具有特定的宝物),问最后的最优期望是多少. 思路:“正向推概率, ...
- bzoj1076 奖励关(概率dp)(状态压缩)
BZOJ 1076 [SCOI2008]奖励关 Description 你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随机抛出k次宝物,每次你都可以选择吃或者不吃(必须 ...
- 【SCOI2008】奖励关 题解(状压DP+期望)
题目链接 题目大意:给定$n$个宝物,每次随机抛出一个宝物,奖励分数为$p_i$.但如果选这个宝物必须选过它的前置宝物集合.共进行$K$轮问最优策略下的期望. $n\leq 15,-10^6\leq ...
- 【BZOJ1076】[SCOI2008]奖励关 状压DP+期望
[BZOJ1076][SCOI2008]奖励关 Description 你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随机抛出k次宝物,每次你都可以选择吃或者不吃(必须 ...
- 【BZOJ1076】奖励关(动态规划,数学期望)
[BZOJ1076]奖励关(动态规划,数学期望) 题面 懒,粘地址 题解 我也是看了题解才会做 看着数据范围,很容易想到状压 然后,设\(f[i][j]\)表示当前第\(i\)轮,状态为\(j\)的期 ...
- 【bzoj1076】[SCOI2008]奖励关
题目描述 你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随机抛出k次宝物,每次你都可以选择吃或者不吃(必须在抛出下一个宝物之前做出选择,且现在决定不吃的宝物以后也不能再 ...
- 【bzoj1076】[SCOI2008]奖励关 期望dp+状态压缩dp
题目描述 你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随机抛出k次宝物,每次你都可以选择吃或者不吃(必须在抛出下一个宝物之前做出选择,且现在决定不吃的宝物以后也不能再 ...
随机推荐
- 08.Hibernate的一级缓存-->>Session
Hibernate提供了两种缓存: 1.一级缓存:自带的不可卸载的,一级缓存的生命周期与Session一致,一级缓存成为Session级别的缓存 2.二级缓存:默认没有开启,需要手动配置才可以使用,二 ...
- windows和ubuntn互传文件
Windows和linux(ubuntu)互传文件简便快捷的方法 现在很多开发和测试的工作环境都是Linux,但测试后期报告的处理一般都是在Windows下完成的,所以需要把结果拿到Windows下. ...
- spring cloud深入学习(十三)-----使用Spring Cloud Sleuth和Zipkin进行分布式链路跟踪
随着业务发展,系统拆分导致系统调用链路愈发复杂一个前端请求可能最终需要调用很多次后端服务才能完成,当整个请求变慢或不可用时,我们是无法得知该请求是由某个或某些后端服务引起的,这时就需要解决如何快读定位 ...
- 处理iphone的 .play() 不能播放问题
一.添加音乐 <audio id="Jaudio" src="shake.mp3" preload loop="loop" contr ...
- Redis源码解析:18Hiredis同步API和回复解析API代码解析
Redis的sentinel模式使用了Hiredis代码,Hiredis是redis数据库一个轻量级的C语言客户端库.它实现的向Redis发送命令的API函数redisCommand,使用方法类似于p ...
- Django项目:CRM(客户关系管理系统)--51--42PerfectCRM实现AJAX全局账号注册
#urls.py """PerfectCRM URL Configuration The `urlpatterns` list routes URLs to views. ...
- 通过游戏学python 3.6 第一季 第五章 实例项目 猜数字游戏--核心代码--猜测次数--随机函数和屏蔽错误代码--优化代码及注释--简单账号密码登陆 可复制直接使用 娱乐 可封装 函数
#猜数字--核心代码--猜测次数--随机函数和屏蔽错误代码---优化代码及注释--账号密码登陆 #!usr/bin/env python #-*-coding:utf-8-*- #QQ12411129 ...
- js作用域的销毁、不立即销毁、不销毁
JavaScript中的函数执行会形成私有的作用域. (1)作用域的销毁 一般情况下,函数执行形成一个私有的作用域,当执行完成后就销毁了->节省内存空间 (2)作用域的不立即销毁 functio ...
- JavaScript中[]+[] 、[]+{}、{}+[]、{}+{}的结果分析
看到这样一个问题:{} + [] 的结果是多少? 一脸懵逼.. 于是在chrome控制台运行 {} + [] 和用 console.log({} + []) 输出,发现结果不一样.. 于是,把各种可能 ...
- 20190719-FirstZero
这也许也是一个成就吧? First Zero 考试 第一次 爆0 好了好了. T1 你永远不知道你在想什么. 我仿佛想出一个$\Theta(NM\log^2 N)$的$dfs$??? 蒟蒻原地爆炸 T ...