题解 [SCOI2008] 奖励关
为了这道题我学了期望 dp(?
为什么会有人期望 dp 入门是这道题啊歪(#`O′)
wtx 一眼秒杀了这题,我们一起来膜拜他!
其实这题很水但是我之前没学过期望 dp 我是什么 nt。
显然我们以每一轮游戏为阶段,同时要记录每个宝物的状态取或没取,宝物最多 15 个,很容易想到状压。
令 \(f_{i,S}\) 为已经到第 \(i\) 轮游戏,取了 \(S\) 到最后的取完的最大期望。
如果能选,那么对于第 \(j\) 个物品有两种可能,选或不选,因此 \(f_{i, S} = f_{i, S} + \max\{f_{i + 1, S}, f_{i + 1, S | (1 << j)} + p_j\}\)。
可能有人并不理解其实只有你 SBSX,为什么是 \(f_{i + 1, S | (1 << j)}\) 而不是 \(f_{i + 1, S - (1 << j)}\) 呢?因为这是倒推!倒推!倒推!倒推!
如果不能选显然 \(f_{i, S} = f_{i, S} + f_{i + 1, S}\),最后 \(f_{i, S} \gets f_{i, S} / n\)。
所以这题确实挺简单的。
//SIXIANG
#include <iostream>
#include <iomanip>
#define MAXN 100
#define QWQ cout << "QWQ" << endl;
using namespace std;
double f[MAXN + 10][(1 << 15) + 10], v[MAXN + 10];
int tot[MAXN + 10][MAXN + 10], c[MAXN + 10], pd[MAXN + 10];
void addbat(int &S, int k) {S -= (1 << k);}
bool get(int S, int k) {return ((S >> k) & 1);}
bool check(int S, int i) {
for(int p = 0; p < c[i]; p++)
if(!get(S, tot[i][p])) return 0;
return 1;
}
signed main() {
int k, n;
cin >> k >> n;
for(int p = 0; p < n; p++) {
cin >> v[p];
int t = 0;
while(1) {
cin >> tot[p][t];
if(!tot[p][t]) break;
pd[p] |= (1 << tot[p][t] - 1);
}
}
for(int p = k; p >= 1; p--) {
for(int S = 0; S < (1 << n); S++) {
for(int i = 0; i < n; i++) {
if((S & pd[i]) == pd[i])
f[p][S] += max(f[p + 1][S], f[p + 1][S | (1 << i)] + v[i]);
else
f[p][S] += f[p + 1][S];
}
f[p][S] /= double(n);
}
}
cout << fixed << setprecision(6) << f[1][0] << endl;
}
题解 [SCOI2008] 奖励关的更多相关文章
- 【BZOJ1076】[SCOI2008]奖励关 状压DP+期望
[BZOJ1076][SCOI2008]奖励关 Description 你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随机抛出k次宝物,每次你都可以选择吃或者不吃(必须 ...
- 1076: [SCOI2008]奖励关
1076: [SCOI2008]奖励关 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2078 Solved: 1118[Submit][Statu ...
- 1076: [SCOI2008]奖励关( dp )
期望状压dp.... ------------------------------------------------------------------ #include<cstdio> ...
- BZOJ_1076_[SCOI2008]奖励关_状压DP
BZOJ_1076_[SCOI2008]奖励关_状压DP 题意: 你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随机抛出k次宝物, 每次你都可以选择吃或者不吃(必须在抛 ...
- LG P2473 [SCOI2008]奖励关
题目链接:P2473 [SCOI2008]奖励关 题意:有n个宝物 每次等概率抛出其中之一一共抛出k次每个宝物有一个价值 和一个前提集合只有集齐了集合中的所有宝物 才可以领取这个宝物 范围:1 < ...
- P2473 [SCOI2008]奖励关(期望)
P2473 [SCOI2008]奖励关 $n<=15$,显然的状压 设$f[i][w]$表示前$i$轮,状态$w$的最大期望 蓝后我们发现一个问题:$f[i][w]$可能是非法的 于是我们从$f ...
- 洛谷 P2473 [SCOI2008]奖励关 解题报告
P2473 [SCOI2008]奖励关 题目描述 你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随机抛出\(k\)次宝物,每次你都可以选择吃或者不吃(必须在抛出下一个宝 ...
- 【洛谷】2473:[SCOI2008]奖励关【期望DP(倒推)】
P2473 [SCOI2008]奖励关 题目背景 08四川NOI省选 题目描述 你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随机抛出k次宝物,每次你都可以选择吃或者不 ...
- BZOJ1076 [SCOI2008]奖励关 【状压dp + 数学期望】
1076: [SCOI2008]奖励关 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 3074 Solved: 1599 [Submit][Sta ...
- [BZOJ1076][SCOI2008]奖励关 状压dp
1076: [SCOI2008]奖励关 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 3070 Solved: 1595[Submit][Statu ...
随机推荐
- 关于cannot remove ‘directory': Directory not empty的解决办法
解决方法 首先你应该使用 rm -rf 目录名 这样确保可以递归删除目录 如果出现 cannot remove 'directory': Directory not empty 报错信息,重启电脑解决 ...
- FCOS论文复现:通用物体检测算法
摘要:本案例代码是FCOS论文复现的体验案例,此模型为FCOS论文中所提出算法在ModelArts + PyTorch框架下的实现.本代码支持FCOS + ResNet-101在MS-COCO数据集上 ...
- Android ViewPager2 + Fragment 联动
Android ViewPager2 + Fragment 联动 本篇主要介绍一下 ViewPager2 + Fragment , 上篇中简单使用了ViewPager2 实现了一个图片的滑动效果, 那 ...
- CTF中RSA常见类型解法
Python脚本 #十六进制转ASCII编码 import binascii print(binascii.unhexlify(hex(m)[2:])) #rsa import gmpy2 phi = ...
- 同步与异步 multiprocessing 进程对象多种方法
目录 同步与异步 阻塞与非阻塞 综合使用 创建进程的多种方式 前言 windows系统创建进程的问题(重要) multiprocessing模块之Process 展现异步 创建进程的方式(一):使用P ...
- 关于ckPlayer 视频加密那些事
最近疫情期间,公司在做一个在线行业教育收费平台,所以不得不做视频转码/切片/加密. 现在只说视频加密如何实现,找遍了所有百度,几乎没有提供相应的源码和例子. 而ckPlayer官网有一个收费的案例:如 ...
- Dubbo架构设计与源码解析(三)责任链模式
作者:周可强 一.责任链模式简介 1.责任链模式定义 责任链(Chain of Responsibility)模式的定义:为了避免请求发送者与多个请求处理者耦合在一起,于是将所有请求的处理者通过前一对 ...
- 学会了selenium 模拟鼠标操作,你就可以偷懒点点点了
前言 我们在做 Web 自动化的时候,有时候页面的元素不需要我们点击,值需要把鼠标移动上去就能展示各种信息. 这个时候我们可以通过操作鼠标来实现,接下来我们来讲一下使用 selenium 做 Web ...
- [python]《Python编程快速上手:让繁琐工作自动化》学习笔记6
1. 发送电子邮件和短信笔记(第16章)(代码下载) 1.1 发送电子邮件 简单邮件传输协议(SMTP)是用于发送电子邮件的协议.SMTP 规定电子邮件应该如何格式化.加密.在邮件服务器之间传递,以及 ...
- DVWA靶场实战(一)——Brute Force
DVWA靶场实战(一) 一.Brute Force: 1.漏洞原理: Brute Force是暴力破解的意思,大致原理就是利用穷举法,穷举出所有可能的密码. 2.攻击方法: Burpsuite中的In ...