天上掉馅饼 期望DP
C 天上掉馅饼
文件名 输入文件 输出文件 时间限制 空间限制
bonus.pas/c/cpp bonus.in bonus.out 1s 128MB
题目描述
小 G 进入了一个神奇的世界,在这个世界,天上会掉下一些馅饼。今天,天上
会随机掉下 k 个馅饼。
每次天上掉下馅饼,小 G 可以选择吃或者不吃(必须在下一个馅饼掉下来之前
作出选择,并且现在决定不吃的话以后也不能吃)。
馅饼有 n 种不同的馅,根据物理定律,天上掉下这 n 种馅饼的概率相同且相互
独立。然而,每一种馅饼 i 都有一个前提馅饼集合 S i 。只有当 S i 中的馅饼都吃过
之后,才能吃第 i 种馅饼。比如说,韭菜馅馅饼的 S 中有白菜猪肉馅饼和鲜虾馅饼,
那么小 G 只有在吃过白菜猪肉馅饼和鲜虾馅饼之后,才能吃韭菜馅的馅饼。
同时,每个馅饼还有一个美味值 P i 。今天一天小 G 的幸福度,等于小 G 吃到
的所有馅饼的美味值之和。注意,P i 可能是负数。
现在考虑,在采用最优策略的前提下,小 G 这一天期望的幸福度是多少?
输入格式
第一行两个正整数 k 和 n,表示馅饼的数量和种类。
以下 n 行,每行若干个数,描述一种馅饼。其中第一个数代表美味值,随后的
整数表示该馅饼的前提馅饼,以 0 结尾。
输出格式
输出一个实数,保留 6 位小数,即在最优策略下期望的幸福度。
样例输入 1
1 2
1 0
2 0
样例输出 1
1.500000
7
数据范围
对于 20% 的数据,所有的馅饼都没有“前提馅饼”
对于 50% 的数据,1 ≤ k ≤ 10,1 ≤ n ≤ 10
对于 100% 的数据,1 ≤ k ≤ 100,1 ≤ n ≤ 15,美味度为属于 [−10 6 ,10 6 ] 的整
数
其实我只写了10分,
看了题解才写出来。
用一个二进制数表示哪些种类的馅饼,从后往前推。
f[i][j]=max(f[i+1][j],f[i+1][j| (1<<p-1)+w[p]
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <iostream>
using namespace std;
long double f[][<<];
int w[],need[];
int k,n;
int main()
{
freopen("bonus.in","r",stdin);
freopen("bonus.out","w",stdout);
scanf("%d%d",&k,&n);
for(int i=,x;i<=n;i++)
{
scanf("%d",&w[i]);
scanf("%d",&x);
while(x)
{
need[i]+=(<<(x-));
scanf("%d",&x);
}
}
for(int i=k;i>=;i--)
for(int j=;j<=(<<n);j++)
{
for(int p=;p<=n;p++)
if((j&need[p])==need[p])
f[i][j]+=max(f[i+][j],f[i+][j|(<<p-)]+w[p]);
else f[i][j]+=f[i+][j];
f[i][j]/=double(n);
}
printf("%.6f",(double)f[][]);
return ;
}
天上掉馅饼 期望DP的更多相关文章
- 清北学堂模拟赛d7t3 天上掉馅饼
题目描述小 G 进入了一个神奇的世界,在这个世界,天上会掉下一些馅饼.今天,天上会随机掉下 k 个馅饼.每次天上掉下馅饼,小 G 可以选择吃或者不吃(必须在下一个馅饼掉下来之前作出选择,并且现在决定不 ...
- 12.Scratch编程小游戏——天上掉馅饼
最意想天开的事,就是天降我们喜欢的食物,今天我们就来编写一个接馅饼的小游戏. 游戏规划: 1.用鼠标控制小猫的来回移动 2.甜甜圈从天而降 3.小猫接到绿色的甜甜圈减一分,接到红色的甜甜圈加一分,接到 ...
- HDU 1176:免费馅饼(DP,自认为很详细的解释)
免费馅饼 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- kuangbin专题十二 HDU1176 免费馅饼 (dp)
免费馅饼 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- G - 免费馅饼 基础DP
都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy的人品实在是太好了,这馅饼别处都不掉,就掉落在他身旁的10米范围内.馅饼如果掉在了地上当然就 ...
- HDU1176-免费馅饼(DP)
免费馅饼 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- HDU1176免费馅饼(DP)
都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy的人品实在是太好了,这馅饼别处都不掉,就掉落在他身旁的10米范围内.馅饼如果掉在了地上当然就 ...
- 天上掉Pizza
天上掉Pizza 时间限制: 3 Sec 内存限制: 128 MB提交: 73 解决: 48[提交][状态][讨论版] 题目描述 明明喜欢Pizza,但总是缺钱.有一天,他在报纸上阅读,他最喜爱的 ...
- 概率期望dp
对于概率dp,我一直都弄得不是特别明白,虽然以前也有为了考试去突击过,但是终究还是掌握得不是很好,所以决定再去学习一遍,把重要的东西记录下来. 1.hdu4405 Description 在一个 \( ...
随机推荐
- BOM——浏览器对象模型(Browser Object Model)
什么是BOM? BOM是Browser Object Model的缩写,简称浏览器对象模型 BOM提供了独立于内容而与浏览器窗口进行交互的对象 由于BOM主要用于管理窗口与窗口之间的通讯,因此其核心对 ...
- kindeditor Springmvc 整和解决图片上传问题
1. 在编辑页面引入js <script type="text/javascript" charset="utf-8" src="${baseP ...
- Java日志:集成slf4j和logback
Java日志方案有很多,包括:java.util.logging.Apache的commons-logging和log4j.slf4j以及logback. 一个大型项目会用到众多第三方jar包,这些j ...
- Linux shell脚本全面学习
Linux shell脚本全面学习 1. Linux 脚本编写基础 1.1 语法基本介绍 1.1.1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它 ...
- CodeForces 484A Bits(水题)
A. Bits time limit per test 1 second memory limit per test 256 megabytes input standard input output ...
- solr-建立单机版的服务器
回到之前打开的页面,刷新,wenda就出来了: 这个wenda是单机版的.
- Jodd发送邮件
public static void main(String[] args) { Email email = Email.create().from("xxx") .to(&quo ...
- OVS调试介绍
基本概念 基本命令 ovs-vsctl # ovs-vsctl show 96a55a7e-f49c-4dbe-b359-bafdff2ccad7 Manager "ptcp:6640:92 ...
- SpringMVC 静态资源处理
<!-- 不处理静态内容 --><mvc:default-servlet-handler/><!--前端控制器,哪些静态资源不拦截--><mvc:resour ...
- xampp搭建discuz论坛
xampp搭建discuz论坛 软件相关 xampp 下载 1.下载xampp,地址 2.下载discuz,地址 配置 1.安装xampp并启动apache和mysql 2.将discuz安装包中的u ...