CF1267G Game Relics(期望、背包)
解析
有些遗憾的一个题。
几乎已经做出来了,但最后把买的代价看成平均数确实没有想到。
还有那个背包我觉得直接做会炸精度,就开始各种玩泥巴。
悲。
比较显然的结论是最优解必然是先抽抽抽然后再买买买。
剩 i 个宝物的时候抽出一个新宝物的期望代价比较好求,是 (ni+1)x2(\frac n i+1)\frac x 2(in+1)2x。
那么现在就是这么一个问题:我有一些宝物,可以直接买,也可以花一定代价抽一个。
那我抽还是买?显然是要看剩下宝物的价格的平均数了。
再看看 ∑c<=10000\sum c<=10000∑c<=10000 的数据范围,不难想到做一个简单的dp fi,jf_{i,j}fi,j 表示 iii 个宝物价格和是 jjj 的概率。
直接做的话应该是统计方案数再除个组合数就行,但浮点运算组合数就是在搞笑了。
解决方法就是把组合数揉到dp转移的里面,其实也挺直观的。
然后还有一个问题就是怎么统计直接买的贡献。直观考虑的话,直接加上其价格之和就行,但是由于其子集也会被考虑到,所以正确的打开方式应该是统计价格的平均数。也就是说:把直接买的过程看成支付 nnn 次平均数的过程,这对最终答案显然是没有影响的。
//luogu
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned long long
#define debug(...) fprintf(stderr,__VA_ARGS__)
#define ok debug("OK\n")
using namespace std;const int N=5050;
const int mod=998244353;
inline ll read(){ll x(0),f(1);char c=getchar();while(!isdigit(c)) {if(c=='-')f=-1;c=getchar();}while(isdigit(c)) {x=(x<<1)+(x<<3)+c-'0';c=getchar();}return x*f;
}inline ll ksm(ll x,ll k){ll res(1);while(k){if(k&1) res=res*x%mod;x=x*x%mod;k>>=1;}return res;
}int n,m;
double f[105][10050],x;
int c[105];signed main(){#ifndef ONLINE_JUDGEfreopen("a.in","r",stdin);freopen("a.out","w",stdout);#endifint S=0;n=read();x=read();for(int i=1;i<=n;i++) c[i]=read(),S+=c[i];f[0][0]=1;for(int i=1;i<=n;i++){for(int k=n;k>=1;k--){for(int j=c[i];j<=S;j++) f[k][j]+=f[k-1][j-c[i]]/(1.0*(n-k+1)/k);}}double ans(0);for(int i=1;i<=n;i++){for(int j=0;j<=S;j++){ ans+=f[i][j]*min(1.0*j/i,x/2*(1.0*n/i+1));//if(f[i][j]>1e-9)// printf("i=%d j=%d f=%.6lf ans=%.6lf\n",i,j,f[i][j],ans);}}printf("%.10lf\n",ans);return 0;
}
CF1267G Game Relics(期望、背包)相关推荐
- CF1267G-Game Relics【数学期望,dp】
正题 题目链接:https://www.luogu.com.cn/problem/CF1267G 题目大意 给出nnn个物品,你可以进行如下操作 花费xxx获得随机一个物品. 花费cic_ici获得 ...
- 期望/概率dp 学习报告
期望dp 期望的基本性质 离散型随机变量和连续型随机变量 例题1:红包发红包 期望的基本运算性质 例题2:Little Pony and Expected Maximum 期望的一些经典题型 图上期望 ...
- 【算法】动态规划+“背包九讲”原理超详细讲解+常见dp问题(9种)总结
目录 一.动态规划(DP) 二.背包九讲 (1)完全背包 P1616 疯狂的采药(完全背包) (2)01背包 滚动数组 一维数组 P1048 采药(01背包) 01背包表格图示 (3)多重背包 整数拆 ...
- 背包问题教程-01背包,完全背包,多重背包,混合背包 收藏
P01: 01背包问题 题目 有N件物品和一个容量为V的背包.第i件物品的费用是c[i],价值是w[i].求解将哪些物品装入背包可使价值总和最大. 基本思路 这是最基础的背包问题,特点是:每种物品仅有 ...
- 动态规划-----------01背包,完全背包与多重背包
P01: 01背包问题 题目 有N件物品和一个容量为V的背包.第i件物品的费用是c[i],价值是w[i].求解将哪些物品装入背包可使价值总和最大. 基本思路 这是最基础的背包问题,特点是:每种物品仅有 ...
- 基于动态背包的多场景广告序列投放算法
简介:电商广告是广告主接触其目标用户的重要手段.普遍的广告目标是在预算约束下,在一定时间范围内最大化广告主累计收入.实际应用中,广告的转化通常需要对同一用户进行多次曝光,直到该用户最终购买为止.但是, ...
- 背包例题【dp练习】
ssl2289-庆功会 Description 为了庆贺班级在校运动会上取得第一名的成绩,班主任决定开一场庆功会,为此拔款购买奖品奖励运动员,期望拔款金额能购买最大价值的奖品,可以补充他们的精力和体力 ...
- P4564 [CTSC2018]假面(期望)
P4564 [CTSC2018]假面 首先容易看出结界技能对第二问敌方剩余生命值期望没有影响. 如何求出第iii个人的剩余生命值期望? 只需要根据Ei=∑j=0aij×fi,jE_i=\sum_{j= ...
- 算法--背包九讲(详细讲解+代码)
背包九讲 目录 第一讲 01背包问题 第二讲 完全背包问题 第三讲 多重背包问题 第四讲 混合三种背包问题 第五讲 二维费用的背包问题 第六讲 分组的背包问题 第七讲 有依赖的背包问题 ...
- hdu2844 Coins(普通的多重背包 + 二进制优化)
看完背包九讲的多重背包之后,这题目应该可以轻松做出来了 模型: 有N种物品和一个容量为V的背包.第i种物品最多有n[i]件可用,每件费用是c[i],价值是w[i].求解将哪些物品装入背包可使这些物品的 ...
最新文章
- 敏捷开发的艺术读书笔记
- c语言变量作用域生命周期,C/C++——C++变量的作用域与生命周期,C语言中变量的作用域和生命周期...
- 基于PAM认证方式详解
- scala中断循环代码示例
- WORD文档的超链接无法打开——“由于本机的限制该操作已被取消”的解决方法
- /proc 虚拟文件系统(实例)
- 初探PostgreSql
- 申请google Map api key for android
- 《南溪的目标检测学习笔记》——PyTorch模型搭建模板
- 滨江学院 刘生 计算机网络考点知识点整理
- wps计算机一级考试提纲,2017计算机一级考试大纲:WPS Office (汇总)
- 修改鼠标手形 闪烁 在填写文字内容后也一直在闪烁
- 每天一道机器学习算法面试题目
- LaTeX安装及周报模板
- spring基础--注解配置ssm开发环境
- wpf DoEvents 用法原理存在的坑推荐方法
- 内网计算机ip地址查询,内网ip地址怎么查看_怎么查看内网ip地址_如何查看电脑的内网IP地址...
- 解决java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid view holder adapter positionV
- 2.5 随从受伤溅血效果的实现———自制卡牌游戏之旅
- OCR文本图像合成工具