解析

有些遗憾的一个题。
几乎已经做出来了,但最后把买的代价看成平均数确实没有想到。
还有那个背包我觉得直接做会炸精度,就开始各种玩泥巴。
悲。

比较显然的结论是最优解必然是先抽抽抽然后再买买买。
剩 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(期望、背包)相关推荐

  1. CF1267G-Game Relics【数学期望,dp】

    正题 题目链接:https://www.luogu.com.cn/problem/CF1267G 题目大意 给出nnn个物品,你可以进行如下操作 花费xxx获得随机一个物品. 花费cic_ici​获得 ...

  2. 期望/概率dp 学习报告

    期望dp 期望的基本性质 离散型随机变量和连续型随机变量 例题1:红包发红包 期望的基本运算性质 例题2:Little Pony and Expected Maximum 期望的一些经典题型 图上期望 ...

  3. 【算法】动态规划+“背包九讲”原理超详细讲解+常见dp问题(9种)总结

    目录 一.动态规划(DP) 二.背包九讲 (1)完全背包 P1616 疯狂的采药(完全背包) (2)01背包 滚动数组 一维数组 P1048 采药(01背包) 01背包表格图示 (3)多重背包 整数拆 ...

  4. 背包问题教程-01背包,完全背包,多重背包,混合背包 收藏

    P01: 01背包问题 题目 有N件物品和一个容量为V的背包.第i件物品的费用是c[i],价值是w[i].求解将哪些物品装入背包可使价值总和最大. 基本思路 这是最基础的背包问题,特点是:每种物品仅有 ...

  5. 动态规划-----------01背包,完全背包与多重背包

    P01: 01背包问题 题目 有N件物品和一个容量为V的背包.第i件物品的费用是c[i],价值是w[i].求解将哪些物品装入背包可使价值总和最大. 基本思路 这是最基础的背包问题,特点是:每种物品仅有 ...

  6. 基于动态背包的多场景广告序列投放算法

    简介:电商广告是广告主接触其目标用户的重要手段.普遍的广告目标是在预算约束下,在一定时间范围内最大化广告主累计收入.实际应用中,广告的转化通常需要对同一用户进行多次曝光,直到该用户最终购买为止.但是, ...

  7. 背包例题【dp练习】

    ssl2289-庆功会 Description 为了庆贺班级在校运动会上取得第一名的成绩,班主任决定开一场庆功会,为此拔款购买奖品奖励运动员,期望拔款金额能购买最大价值的奖品,可以补充他们的精力和体力 ...

  8. P4564 [CTSC2018]假面(期望)

    P4564 [CTSC2018]假面 首先容易看出结界技能对第二问敌方剩余生命值期望没有影响. 如何求出第iii个人的剩余生命值期望? 只需要根据Ei=∑j=0aij×fi,jE_i=\sum_{j= ...

  9. 算法--背包九讲(详细讲解+代码)

    背包九讲 目录  第一讲 01背包问题  第二讲 完全背包问题  第三讲 多重背包问题  第四讲 混合三种背包问题  第五讲 二维费用的背包问题  第六讲 分组的背包问题  第七讲 有依赖的背包问题  ...

  10. hdu2844 Coins(普通的多重背包 + 二进制优化)

    看完背包九讲的多重背包之后,这题目应该可以轻松做出来了 模型: 有N种物品和一个容量为V的背包.第i种物品最多有n[i]件可用,每件费用是c[i],价值是w[i].求解将哪些物品装入背包可使这些物品的 ...

最新文章

  1. 敏捷开发的艺术读书笔记
  2. c语言变量作用域生命周期,C/C++——C++变量的作用域与生命周期,C语言中变量的作用域和生命周期...
  3. 基于PAM认证方式详解
  4. scala中断循环代码示例
  5. WORD文档的超链接无法打开——“由于本机的限制该操作已被取消”的解决方法
  6. /proc 虚拟文件系统(实例)
  7. 初探PostgreSql
  8. 申请google Map api key for android
  9. 《南溪的目标检测学习笔记》——PyTorch模型搭建模板
  10. 滨江学院 刘生 计算机网络考点知识点整理
  11. wps计算机一级考试提纲,2017计算机一级考试大纲:WPS Office (汇总)
  12. 修改鼠标手形 闪烁 在填写文字内容后也一直在闪烁
  13. 每天一道机器学习算法面试题目
  14. LaTeX安装及周报模板
  15. spring基础--注解配置ssm开发环境
  16. wpf DoEvents 用法原理存在的坑推荐方法
  17. 内网计算机ip地址查询,内网ip地址怎么查看_怎么查看内网ip地址_如何查看电脑的内网IP地址...
  18. 解决java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid view holder adapter positionV
  19. 2.5 随从受伤溅血效果的实现———自制卡牌游戏之旅
  20. OCR文本图像合成工具

热门文章

  1. VMware ESX Server常用命令行
  2. 水质检测c语言程序,单片机TDS水质检测源程序
  3. mapbox-gl:创建Marker
  4. python 图形可视化_Python数据可视化-图形,python,曲线图
  5. Bugku WEB 安慰奖
  6. Python-脾气暴躁
  7. 采购杀毒软件 确保网络信息安全
  8. 每天一个linux命令(33):atq命令
  9. 点云分割中Proposal-based Methods与Proposal-free Methods
  10. poi-tl导出word出错