【bzoj1076】 SCOI2008—奖励关
http://www.lydsy.com/JudgeOnline/problem.php?id=1076 (题目链接)
题意
一个奖励,K次抛出宝物的机会,每次抛出都等概率的抛出n个物品中的一个,每个物品有一个价值,想获得每个物品必须先获得一些另一些物品。求最终获得的价值的期望。
Solution
题意不明啊!!!
好吧,令${f_{i,s}}$表示第i次,之前获得过的宝物的状态为s的期望得分。
那么很显然我们可以列出期望方程:
$${f_{i,s}=\sum_{j=1}^{n}Max\{f_{i+1,s|bin[j-1]},f_{i+1,s}\}}$$
宝物抛出后,可以吃也可以不吃。注意条件。
代码
// bzoj1076
#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<queue>
#define LL long long
#define inf 1<<30
#define Pi acos(-1.0)
#define free(a) freopen(a".in","r",stdin),freopen(a".out","w",stdout);
using namespace std; const int maxn=110;
int bin[30];
int n,K,S[maxn],p[maxn];
double f[maxn][1<<15]; int main() {
bin[0]=1;for (int i=1;i<=20;i++) bin[i]=bin[i-1]<<1;
scanf("%d%d",&K,&n);
for (int x,i=1;i<=n;i++) {
scanf("%d",&p[i]);
while (scanf("%d",&x)!=EOF && x) S[i]+=bin[x-1];
}
for (int i=K;i>=1;i--)
for (int j=0;j<bin[n];j++) {
for (int k=1;k<=n;k++) {
if ((S[k]&j)==S[k]) f[i][j]+=max(f[i+1][j],f[i+1][j|bin[k-1]]+p[k]); //可以选择不吃
else f[i][j]+=f[i+1][j];
}
f[i][j]/=n;
}
printf("%.6lf",f[1][0]);
return 0;
}
【bzoj1076】 SCOI2008—奖励关的更多相关文章
- 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 ...
- bzoj1076: [SCOI2008]奖励关(期望dp+状压dp)
1076: [SCOI2008]奖励关 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2989 Solved: 1557[Submit][Statu ...
- [BZOJ1076][SCOI2008]奖励关解题报告|状压DP
你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随机抛出k次宝物,每次你都可以选择吃或者不吃(必须在抛出下一个宝物之前做出选择,且现在决定不吃的宝物以后也不能再吃). 宝 ...
- Bzoj1076 [SCOI2008]奖励关
Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1935 Solved: 1053 Description 你正在玩你最喜欢的电子游戏,并且刚刚进入一 ...
- BZOJ1076: [SCOI2008]奖励关【状压DP+期望DP】
Description 你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随机抛出k次宝物, 每次你都可以选择吃或者不吃(必须在抛出下一个宝物之前做出选择,且现在决定不吃的 ...
- BZOJ1076:[SCOI2008]奖励关(状压DP,期望)
Description 你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随机抛出k次宝物, 每次你都可以选择吃或者不吃(必须在抛出下一个宝物之前做出选择,且现在决定不吃的 ...
- BZOJ1076 [SCOI2008]奖励关 概率 状态压缩动态规划
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1076 题意概括 有n个东西,k次扔出来.每次等概率扔出其中一个. 你可以拿这个东西,但是有条件,得 ...
- 【题解】 bzoj1076: [SCOI2008]奖励关 (装压+期望dp)
题面戳我 Solution 并不会做,看了下题解大概了解了.期望这个东西好难搞啊qwq 我们定义\(dp[i][j]\)表示第\(i\)步,拿到宝物前的状态为\(j\). 正着来会有很多不合法的情况, ...
- bzoj千题计划206:bzoj1076: [SCOI2008]奖励关
http://www.lydsy.com/JudgeOnline/problem.php?id=1076 很容易想到方程 dp[i][j]表示抛出了i个宝物,已选宝物状态为j的期望最大得分 初始化dp ...
随机推荐
- 初识angularjs
1,angular的ng-model带来了双向绑定机制 2,用angular的表达式{{...}}现实在HTML中,存储在我们的$scope上 3,在angular中$scope是连接controll ...
- js中A包含B的写法与分割字符串的方法
在java中A包含B的写法 if(A.contains(B)){ ... } 在js中没有contains方法,应该使用下面这种方法: var an = "传染性.潜伏性.破坏性" ...
- vim中tab转为空格
:set ts=4:set expandtab:%retab!
- DPA 9.1.85 升级到DPA 10.0.352流程
SolarWinds DPA的升级其实是一件非常简单的事情,这里介绍一下从DPA 9.1.95升级到 DPA 10.0.352版本的流程.为什么要升级呢? DPA给用户发的邮件已经写的非常清楚了(如下 ...
- 查看数据库表的数据量和SIZE大小的脚本修正
在使用桦仔的分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间)的脚本时,遇到下面一些错误 这个是因为这些表的Schema是Maint,而不是默认的dbo,造成下面这段SQ ...
- js 输出二维数组的最大值
function num(arr){ max=a[0][0]; for (var i = 0; i < a.length; i++) { for (var j = 0; j< a[i].l ...
- [转]一种简单的js时间控件
使用方法: 粘贴代码到文本文档中,文档名称为datetime.js,然后在html文件中引用如下代码即可 <input name="shijian1" id="sh ...
- POJ3398Perfect Service[树形DP 树的最大独立集变形]
Perfect Service Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 1518 Accepted: 733 De ...
- NOIP2004火星人
法1:裸的全排列 加点优化也可以很快---洛谷6ms #include<cstdio> #include<cstring> #include<algorithm> ...
- 片元着色器(Fragment Shader)被称为像素着色器(Pixel Shader),但
片元着色器(Fragment Shader)被称为像素着色器(Pixel Shader),但片元着色器是一个更合适的名字, 因为此时的片元并不是一个真正意义上的像素.