洛谷 P2473 [SCOI2008]奖励关(状压dp+期望)
题面
题解
\(n \leq 15\)
状压
\(f[i][S]\)表示第\(i\)轮,吃过的集合为\(S\)
正着转移好像有点复杂
考虑逆推转移(正着转移应该也行)
\(f[i][S]\)表示\([1,i-1]\)轮,吃过的集合为\(S\),第\(i\)轮到第\(k\)轮最大期望得分
Code
#include<bits/stdc++.h>
#define LL long long
#define RG register
const int N = 16;
using namespace std;
template<class T> inline void read(T &x) {
x = 0; RG char c = getchar(); bool f = 0;
while (c != '-' && (c < '0' || c > '9')) c = getchar(); if (c == '-') c = getchar(), f = 1;
while (c >= '0' && c <= '9') x = x*10+c-48, c = getchar();
x = f ? -x : x;
return ;
}
template<class T> inline void write(T x) {
if (!x) {putchar(48);return ;}
if (x < 0) x = -x, putchar('-');
int len = -1, z[20]; while (x > 0) z[++len] = x%10, x /= 10;
for (RG int i = len; i >= 0; i--) putchar(z[i]+48);return ;
}
int k, n, need[N], w[N];
double f[110][1<<N];
int main() {
read(k), read(n);
for (int i = 0, x; i < n; i++) {
read(w[i]);
while (1) {read(x); if (!x) break; x--;need[i] |= (1 << x);}
}
int limit = 1 << n;
for (int i = k; i; i--)
for (int S = 0; S < limit; S++) {
for (int j = 0; j < n; j++)
if ((need[j] & S) == need[j])
f[i][S] += max(f[i + 1][S | (1 << j)] + w[j], f[i + 1][S]);
else f[i][S] += f[i + 1][S];
f[i][S] /= n;
}
printf("%lf\n", f[1][0]);
return 0;
}
洛谷 P2473 [SCOI2008]奖励关(状压dp+期望)的更多相关文章
- 【BZOJ1076】[SCOI2008]奖励关 状压DP+期望
[BZOJ1076][SCOI2008]奖励关 Description 你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随机抛出k次宝物,每次你都可以选择吃或者不吃(必须 ...
- B1076 [SCOI2008]奖励关 状压dp&&期望dp
这个题的n<15,一看就是状压dp.但是状态不是很好想.f[][]存i关的状态j. 这个题另一个关键思想在于倒推,我一开始想的是正推,但是只能记忆化了. 题干: 题目描述 你正在玩你最喜欢的电子 ...
- BZOJ1076:[SCOI2008]奖励关(状压DP,期望)
Description 你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随机抛出k次宝物, 每次你都可以选择吃或者不吃(必须在抛出下一个宝物之前做出选择,且现在决定不吃的 ...
- 洛谷 P2473 [SCOI2008]奖励关 解题报告
P2473 [SCOI2008]奖励关 题目描述 你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随机抛出\(k\)次宝物,每次你都可以选择吃或者不吃(必须在抛出下一个宝 ...
- SCOI2008奖励关 [状压dp]
题目描述 你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随机抛出k次宝物,每次你都可以选择吃或者不吃(必须在抛出下一个宝物之前做出选择,且现在决定不吃的宝物以后也不能再 ...
- [BZOJ1076][SCOI2008]奖励关 状压dp
1076: [SCOI2008]奖励关 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 3070 Solved: 1595[Submit][Statu ...
- 洛谷P2473 [SCOI2008]奖励关(期望+状压)
传送门 我数学期望还是太差了…… 先考虑状压模型,设$dp[i][S]$表示第$i$轮,当前宝物状态为$S$,能获得的最大期望分数 然而这个模型有一个问题,第$i$轮不一定能达到状态$S$ 那么考虑转 ...
- 洛谷 P2473 [SCOI2008]奖励关 ( 期望DP )
题目链接 题意 : 中文题.点链接 分析 : 第一道有关概率期望的DP 有个大部分情况下通用的结论 概率正推.期望反推 原因不明.其实是没有查到较好的解释 这题由于有一些取物品的先决条件在这里 而且观 ...
- 洛谷P2473奖励关——状压DP
题目:https://www.luogu.org/problemnew/show/P2473 还是对DP套路不熟悉... 像这种前面影响后面,而后面不影响前面的问题就应该考虑倒序递推: 看n只有15那 ...
随机推荐
- WCF技术剖析(卷1)WCF全面解析文摘
第1章 wcf简介 soa体现的是一种对关注点进行分解的思想,与技术无关 soa的基本思想: a.服务自治 独立部署,不依赖其他 b.依赖于开放的标准 采用xml,xsd,及wsdl作为服务描述的 ...
- Web挖掘
Web挖掘 Web挖掘的目标是从Web的超链接.网页内容和使用日志中探寻有用的信息.依据Web挖掘任务,可以划分为三种主要类型:Web结构挖掘.Web内容挖掘和Web使用挖掘.Web结构挖掘简单的说就 ...
- Web前后端数据交换技术和规范发展史:Form、Ajax、Comet、Websocket
第一阶段:Form web应用想要与服务器交互,必须提交一个表单(form).服务器接收并处理该表单,然后返回一个全新的页面. 缺点:前后两个页面需要更新的数据可能很少,这个过程可能传输了很多之前那个 ...
- 動態修改 XML 欄位
/* -- for test DECLARE @content VARCHAR(50) DECLARE @folioId VARCHAR(50) DECLARE @opinionType VARCHA ...
- Mirth Connect的简单使用
第一步: 切换到Channels界面,右键点击New Channel 第二步 : 上面是设置一些通道信息. 其中summary(概要) 界面主要包含 通道名称,数据类型,依赖,通道初始状态,附件(是否 ...
- centos top命令列解释
查看单个进程:top -p 进程号 PID(Process ID):进程标示号 ( 每个 process 的 ID ) USER:进程所有者的用户名 ( 该 process 所属的使用者 ) PR:进 ...
- 电表读数归零回滚SQL处理算法
在采集电表数据的时候,可以发现有些电表设备读数会发生回滚.这时候,如果单纯的累加计算用电量,就会出现负值.当然,这也许和电表的质量有关系. “RTQty”(当前读到的读数).“LastQty”(上次读 ...
- /usr/bin/curl: Argument list too long的解决方法
使用curl发送http请求时,会出现-bash: /usr/bin/curl: Argument list too long的错误,此时,可用采用httpie代替curl发送请求: pip inst ...
- 修改Tomcat的jvm的垃圾回收GC方式为CMS
修改Tomcat的jvm的垃圾回收GC方式 cp $TOMCAT_HOME/bin/catalina.sh $TOMCAT_HOME/bin/catalina.sh.bak_20170815 vi $ ...
- angular 程序架构