[BZOJ1076][SCOI2008]奖励关解题报告|状压DP
你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关。在这个奖励关里,系统将依次随机抛出k次宝物,每次你都可以选择吃或者不吃(必须在抛出下一个宝物之前做出选择,且现在决定不吃的宝物以后也不能再吃)。 宝物一共有n种,系统每次抛出这n种宝物的概率都相同且相互独立。也就是说,即使前k-1次系统都抛出宝物1(这种情况是有可能出现的,尽管概率非常小),第k次抛出各个宝物的概率依然均为1/n。 获取第i种宝物将得到Pi分,但并不是每种宝物都是可以随意获取的。第i种宝物有一个前提宝物集合Si。只有当Si中所有宝物都至少吃过一次,才能吃第i种宝物(如果系统抛出了一个目前不能吃的宝物,相当于白白的损失了一次机会)。注意,Pi可以是负数,但如果它是很多高分宝物的前提,损失短期利益而吃掉这个负分宝物将获得更大的长期利益。 假设你采取最优策略,平均情况你一共能在奖励关得到多少分值?
其实题目有个地方刚开始没看懂...
刚开始说了你必须在跑出下一个宝物之前做出选择,然后我以为和执行最优策略矛盾了...
事实上你所得到的都是期望得分
必须在跑出下一个宝物之前作出选择,是因为游戏的具体过程是由系统操作的我们不清楚
而执行最优策略只要在系统执行的一些概率条件下 作出能够得到最大期望得分的操作
我们考虑倒序DP
枚举当前是哪一轮,以及作出选择之前n个数取与不取的状态是怎样的
再枚举这一轮系统抛下的宝物是哪一件
如果满足这个宝物可以取,就在取与不取之间作取舍,如果不可以取,就只能不取
最后再思考一个问题
题目中有一句话“现在决定不吃的宝物以后也不能再吃”,这个限制在DP过程中并没有体现
另外要注意,这个条件限制存在仅当目前这个宝物可以吃,也就是我们有自主选择的权利
然而仔细想一想便可知是不存在问题的
因为当前可以吃的宝物,以后一定也可以吃,因为已经满足了前提宝物集合的条件
然而现在吃掉,在以后还可以吃一些前提宝物集合为当前宝物的宝物
所以当前吃掉一定比以后吃掉的策略要优秀
所以在执行最优决策的过程中是不存在现在不吃以后吃的情况的~
program bzoj1076;
const maxn = ;maxm = ;
var i,k,n,x,j,p:longint;
w:array[-..maxn]of longint;
a:array[-..,-..]of longint;
vis:array[-..,-..maxm]of boolean;
f:array[-..maxn,-..maxm]of extended; function ok(x,y:longint):boolean;
var i:longint;
tmp:array[-..]of longint;
begin
for i:= to n do tmp[i]:=y >> (n-i) and ;
for i:= to a[x,] do if tmp[a[x,i]]= then exit(false);
exit(true);
end; function max(a,b:extended):extended;
begin
if a>b then exit(a) else exit(b);
end; begin
readln(k,n);
fillchar(a,sizeof(a),);
for i:= to n do
begin
read(w[i]);
read(x);
while x<> do
begin
inc(a[i,]);
a[i,a[i,]]:=x;
read(x);
end;
readln;
end;
for i:= to n do
for j:= to << n- do vis[i,j]:=ok(i,j);
for i:=k downto do //i表示当前进行到第i轮
for j:= to << n- do //n件物品取与不取的状态
begin
for p:= to n do if vis[p,j] then f[i,j]:=f[i,j]+max(f[i+,j],f[i+,j or ( << (n-p))]+w[p]) else f[i,j]:=f[i,j]+f[i+,j];
f[i,j]:=f[i,j]/n;
end;
writeln(f[,]::);
end.
[BZOJ1076][SCOI2008]奖励关解题报告|状压DP的更多相关文章
- 2018.09.23 bzoj1076: [SCOI2008]奖励关(期望+状压dp)
传送门 一道神奇的期望状压dp. 用f[i][j]f[i][j]f[i][j]表示目前在第i轮已选取物品状态为j,从现在到第k轮能得到的最大贡献. 如果我们从前向后推有可能会遇到不合法的情况. 所以我 ...
- 洛谷 P2473 [SCOI2008]奖励关 解题报告
P2473 [SCOI2008]奖励关 题目描述 你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随机抛出\(k\)次宝物,每次你都可以选择吃或者不吃(必须在抛出下一个宝 ...
- [BZOJ1087][SCOI2005]互不侵犯King解题报告|状压DP
在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子. 好像若干月前非常Naive地去写过DFS... ...
- 【SCOI2008】奖励关 题解(状压DP+期望)
题目链接 题目大意:给定$n$个宝物,每次随机抛出一个宝物,奖励分数为$p_i$.但如果选这个宝物必须选过它的前置宝物集合.共进行$K$轮问最优策略下的期望. $n\leq 15,-10^6\leq ...
- 洛谷P2473 [SCOI2008]奖励关(期望+状压)
传送门 我数学期望还是太差了…… 先考虑状压模型,设$dp[i][S]$表示第$i$轮,当前宝物状态为$S$,能获得的最大期望分数 然而这个模型有一个问题,第$i$轮不一定能达到状态$S$ 那么考虑转 ...
- BZOJ1076 [SCOI2008]奖励关 【状压dp + 数学期望】
1076: [SCOI2008]奖励关 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 3074 Solved: 1599 [Submit][Sta ...
- bzoj1076: [SCOI2008]奖励关(期望dp+状压dp)
1076: [SCOI2008]奖励关 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2989 Solved: 1557[Submit][Statu ...
- [BZOJ1076][SCOI2008]奖励关 状压dp
1076: [SCOI2008]奖励关 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 3070 Solved: 1595[Submit][Statu ...
- BZOJ1076 [SCOI2008]奖励关 概率 状态压缩动态规划
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1076 题意概括 有n个东西,k次扔出来.每次等概率扔出其中一个. 你可以拿这个东西,但是有条件,得 ...
随机推荐
- lintcode-13-字符串查找
字符串查找 对于一个给定的 source 字符串和一个 target 字符串,你应该在 source 字符串中找出 target 字符串出现的第一个位置(从0开始).如果不存在,则返回 -1. 说明 ...
- LintCode-376.二叉树的路径和
二叉树的路径和 给定一个二叉树,找出所有路径中各节点相加总和等于给定 目标值 的路径. 一个有效的路径,指的是从根节点到叶节点的路径. 样例 给定一个二叉树,和 目标值 = 5: 返回: [ ...
- phpcmsv9 同时调用多个栏目的文章标签
V9版本默认好像没有多栏目调用的标签,例如我用{pc:content action="lists" catid ="6,7,8,9,10" num=" ...
- cacti添加多个tomcat监控(多端口)
1.修改tomcat的模版 Data Input Methods->Tomcat Status 把原本固定的端口,用户名和密码手动修改成变量(绿线标出的),之后save保存之后,再在Input ...
- Eclipse闪退解决方案
1. 找到Eclipse目录下的eclipse.exe,右键点击->发送到桌面快捷方式,然后右键点击快捷方式,选择属性,修改“目标”(或target),其中红色代表eclipse的路径,绿色代表 ...
- BZOJ 1797 最小割(最小割割边唯一性判定)
问题一:是否存在一个最小代价路径切断方案,其中该道路被切断? 问题二:是否对任何一个最小代价路径切断方案,都有该道路被切断? 现在请你回答这两个问题. 最小割唯一性判定 jcvb: 在残余网络上跑ta ...
- 锁-lock,信号量4
1. 全局解释器锁,保证同一时间只有一个线程在执行,但是由于它是把数据copy成了两份,所以 只有全局解释器锁的时候,数据加减照样出错了. 2.用户态的锁,保证同一时间,只有一个线程在真真正正地修改数 ...
- ARC072E Alice in linear land
---题面--- 题解: 首先我们要观察到一个性质,因为在固定的起始距离下,经过固定的操作,最后所在的位置是固定的,我们设经过操作1 ~ i之后所在的地方距离终点为d[i]. 那么如果女巫可以修改第i ...
- POJ.1061 青蛙的约会 (拓展欧几里得)
POJ.1061 青蛙的约会 (拓展欧几里得) 题意分析 我们设两只小青蛙每只都跳了X次,由于他们相遇,可以得出他们同余,则有: 代码总览 #include <iostream> #inc ...
- Mysql数据库的主从复制
怎么安装mysql数据库,这里不说了,只说它的主从复制,步骤如下: 1.主从服务器分别作以下操作: 1.1.版本一致 1.2.初始化表,并在后台启动mysql 1.3.修改root的密码 2.修 ...