【数学期望】期望dp

【动态规划】数学期望/概率DP/期望DP详解 期望DP概述规律全概率公式例题1.UVA11021 Tribles麻球繁衍2.算概率(简单,数论) 概述 一般来说,概率DP找到正确的状态定义后,转移是比较容易想到的。但状态一定是“可数”的,把有范围的整数作为数组下标。事实上,将问题直接作为状态是最好的。如问“n人做X事的期望次数”,则设计状态为f[i]表示i个人做完事的期望。转移一般是递推,即从上一个状态转移得(填表)或转移向下一个状态(刷表)... 阅读详情

参考博客: https://www.zybuluo.com/zsh-o/note/1175045
此类问题,一般用递推的思想去考虑比较简单。跟普通的dp差不多,前面的子问题可以重复使用。
在这里插入图片描述

例题1

https://ac.nowcoder.com/acm/contest/697/A

题解

这个题其实就是抛硬币连续k次正面的变形。
在还没看博客之前做着题的时候,我想的是,走到第i个点需要1秒的期望,2秒的期望,3秒的期望,4秒的期望。。。。。
会发现这个根本就不可做。如果每颗雷的概率相同的话,还能用错位相减推出通项公式。

可以采用递推的方式:
f[i] : 成功排掉第i颗雷所需的期望时间
递推关系:
f [ i ] = a i b i ( f [ i − 1 ] + 1 ) + ( 1 − a i b i ) ( f [ i − 1 ] + 1 + f [ i ] ) f[i] = \frac{a_i}{b_i}(f[i-1]+1)+(1-\frac{a_i}{b_i})(f[i-1]+1+f[i]) f[i]=bi​ai​​(f[i−1]+1)+(1−bi​ai​​)(f[i−1]+1+f[i])
成功排掉第i颗雷+不成功需要重新排
化简之后
f [ i ] = b i a i ( f [ i − 1 ] + 1 ) f[i] = \frac{b_i}{a_i}(f[i-1]+1) f[i]=ai​bi​​(f[i−1]+1)

代码

#include <bits/stdc++.h>
using namespace std;
// f[i] : 成功排掉第i个雷的期望时间
// f[i] = a/b*(f[i-1]+1)+(1-a/b)*(f[i-1]+1+f[i])
// f[i] = b/a*(f[i-1]+1);
const int mod = 1e9+7;
const int maxn = 1e6+5;
typedef long long ll;
ll pw(ll x, ll n) {
    ll ret = 1;
    while(n) {
        if(n&1) ret = ret*x%mod;
        x = x*x%mod;
        n >>= 1;
    }
    return ret;
}
ll f[maxn];

int main() {
    int n;
    scanf("%d", &n);
    ll a,b;
    for(int i = 1; i <= n; ++i) {
        scanf("%lld%lld", &a, &b);
        f[i] = (b*pw(a,mod-2)%mod*((f[i-1]+1)%mod))%mod;
    }
    printf("%lld\n", f[n]);
    return 0;
}

例题2

https://blog.youkuaiyun.com/Link_Ray/article/details/89292941

例题3

https://cometoj.com/contest/37/problem/B?problem_id=1529

题解

设利润为X。售价为q,所给的钱为p。
E ( X ) = E ( q − p ) = p − l r − l ( q − E ( p ) ) + ( 1 − p − l r − l ) ∗ 0 E(X) = E(q-p) = \frac{p-l}{r-l}(q-E(p))+(1-\frac{p-l}{r-l})*0 E(X)=E(q−p)=r−lp−l​(q−E(p))+(1−r−lp−l​)∗0
看做离散型来分析
E ( p ) = L + L + 1 + ⋯ + R E(p) = L+L+1+\dots+R E(p)=L+L+1+⋯+R
E ( p ) = R ( R + 1 ) 2 − L ( L − 1 ) 2 = L + R 2 E(p) = \frac{R(R+1)}{2}- \frac{L(L-1)}{2} = \frac{L+R}{2} E(p)=2R(R+1)​−2L(L−1)​=2L+R​
可以得出E(X)是一个二次函数,且p的范围在[l,r]之间,因为小于l那么答案就是0,大于r的话不会比选r更优。

代码

#include <bits/stdc++.h>
using namespace std;
#define FOR0(a,b) for(int i = a; i < b; ++i)
#define FORE(a,b) for(int i = a; i <= b; ++i)
typedef long long ll;
typedef pair<int,int> pii;

int main() {
    double L,R,l,r;
    cin >> l >> r >> L >> R;
    double t1 = (L+R)/2;
    double t2 = r-l;
    double ans = 0;
    double t = (t1+l)/2;
    if((t1+l)/2 >= l && (t1+l)/2 <= r) {
        ans = (t-l)/t2*(t1-t);
    } else {
        ans = max(0.0, t1-r);
    }
    printf("%.4lf\n", ans);
    return 0;
}

例题4

期望的顺推与逆推:
参考:https://blog.youkuaiyun.com/myjs999/article/details/81022546

  1. 涂格子1

    n个格子,每次随机涂一个,求涂满m个格子的期望次数。

设 f[i]: 涂完i个格子所需的期望次数
易知f[m] = 0,采用逆推。
f [ i ] = ( i n f [ i ] + n − i n f [ i + 1 ] ) + 1 f[i] = (\frac{i}{n}f[i]+\frac{n-i}{n}f[i+1])+1 f[i]=(ni​f[i]+nn−i​f[i+1])+1

  1. 涂格子2

    n个格子,每次随机涂一个,求涂m次后期望涂色格子数。

设f[i]:涂了i次的染色格子的期望个数
易知f[0] = 0,采用顺推。
f[i] = 涂成功+没涂成功
f [ i ] = n − f [ i − 1 ] n ∗ 1 + f [ i − 1 ] f[i] = \frac{n-f[i-1]}{n}*1+f[i-1] f[i]=nn−f[i−1]​∗1+f[i−1]

  1. 涂格子3

    有n个格子,每次会涂一个格子,其中涂第i个格子的概率是 p i p_i pi​( ∑ i = 1 n p i = 1 \sum^{n}_{i=1}{p}_i =1 ∑i=1n​pi​=1)。求每个格子都被涂色的期望次数。

这个和1其实很类似,因为每个格子只能涂一次且概率不同,所以没法把“格子数量”当成一维状态,只能使用状压。
f[S]:状态S到全部颜色都被涂的期望次数。
当 S = 2 n − 1 S = 2^n-1 S=2n−1时, f [ S ] = 0 f[S] = 0 f[S]=0。
采用逆推
f [ S ] = ∑ i = 0 n ( p i ∗ f [ S ∣ 2 i ] ) + 1 f[S] = \sum_{i=0}^{n}(p_i*f[S|2^i]) +1 f[S]=i=0∑n​(pi​∗f[S∣2i])+1
无论从哪里转移而来,此次的次数都要加1。
这里i必须是S中为0的位置。

例题5

https://cometoj.com/contest/37/problem/C

题解

考虑每个点集对期望的贡献。当一个点集有i个点,那么其内部就有 i ∗ ( i − 1 ) 2 \frac{i*(i-1)}{2} 2i∗(i−1)​条边,全部消去的概率是 ( x y ) i ∗ ( i − 1 ) 2 (\frac{x}{y})^{\frac{i*(i-1)}{2}} (yx​)2i∗(i−1)​,贡献则是 ( x y ) i ∗ ( i − 1 ) 2 ∗ 1 (\frac{x}{y})^{\frac{i*(i-1)}{2}}*1 (yx​)2i∗(i−1)​∗1,那么答案便是
∑ i = 0 n ( C n i ∗ ( x y ) i ∗ ( i − 1 ) 2 ∗ 1 ) \sum_{i=0}^{n}(C^{i}_{n}*(\frac{x}{y})^{\frac{i*(i-1)}{2}}*1) i=0∑n​(Cni​∗(yx​)2i∗(i−1)​∗1)

代码

#include <bits/stdc++.h>
using namespace std;
#define FOR0(a,b) for(int i = a; i < b; ++i)
#define FORE(a,b) for(int i = a; i <= b; ++i)
typedef long long ll;
typedef pair<int,int> pii;

const int mod = 998244353;
const int maxn = 1e5+5;

ll inv[maxn], C[maxn];
ll pw(ll x, ll n) {
    ll ret = 1;
    while(n) {
        if(n&1) ret = ret*x%mod;
        x = x*x%mod;
        n >>= 1;
    }
    return ret;
}
int n;
int main() {
    ll x,y;
    scanf("%d%lld%lld", &n, &x, &y);    
    inv[1] = 1;
    for(ll i = 2; i <= n; ++i) {
        inv[i] = (mod-mod/i)*inv[mod%i]%mod;
    }
    C[0] = 1; C[1] = n;
    for(ll i = 2; i <= n; ++i) 
        C[i] = C[i-1]*inv[i]%mod*(n-i+1)%mod;
    ll ans = 0;
    ll p = x*pw(y,mod-2)%mod;
    ans = 1;
    for(ll i = 1; i <= n; ++i) {
        ans += C[i]*pw(p,i*(i-1)/2)%mod;
        ans %= mod;
    }
    printf("%lld\n", ans);
    return 0;
}
数学期望DP小结 最近刚学了数学期望DP,还是蛮恶心的,但是相比于其他DP还是比较好想的,主要思路和线性DP类似,主要注意的是概率计算利用加法原理加和的方式,还要注意避免数组下标为负的情况,需要进行平移。 Tyvj1864 守卫者的挑战 比较简单的一道数学概率DP,要注意负数组下标。 f[i][j][k] 表示 前i场 赢了j场 容量-地图为k的概率 然后状态转移是 :如果 赢了,i+1,j+1,k进行相应变 阅读详情

相关推荐

新疆地形数据下载:30米、12.5米、5米DEM地形数据

新疆是我国陆地面积最大的省级行政区,总面积达166万平方公里。新疆的地形也十分的复杂,新疆的地形呈山脉与盆地相间排列,盆地被高山环抱,,俗称“三山夹两盆”。三山指阿尔泰山、昆仑山、天山,两盆是指塔里木盆地和准噶尔盆地。 对精度要求不高的话,可以直接使用图新地球下载 新疆30米地形数据 大小:9.26GB 来自ASTER v3的新疆30米地形数据 30米地形数据下载 新疆12.5米地形数据 12.5米DEM数据由于精度比较高,一般不会用到全省的数据,通常用的是一个地区的,因此,可以单独分

LocaSpace的博客 3495

概率&期望

概率DP f[i]=∑p[i→j]*f[j]+w[i→j] 其中p[]表示转移的概率,w[]表示转移对答案的贡献。一般来说,初始状态确定时可用顺推,终止状态确定时可用逆推。 如: 涂格子1 n个格子,每次随机涂一个,求涂满m个格子的期望次数。 如概述所说,因为最终状态确定,使用逆推。 设计状态f[i]表示涂了i 个格子,到涂满m 个格子还要涂的期望次数。初始状态是f[m]=0 。转移时...

wangqianqianya的博客 680

FUEL算法解读(一)——框架解读,思维导图可以很清晰看懂算法启动框架,已更新完,图太大放不上来链接在文末

一图看懂FUEL算法节点框架!!!

weixin_43793717的博客 2784

CF398B Painting The Wall 概率期望

题意:有一个 $n * n$ 的网格,其中 $m$ 个格子上涂了色。每次随机选择一个格子涂色,允许重复涂,求让网格每一行每一列都至少有一个格子涂了色的操作次数期望。题解:,,这种一般都要倒推才行。设$f[i][j]$表示还有$i$行,$j$列未满足的情况下的期望次数。因为每次选择都是完全随机,不受其他东西的影响。所以对于题中给出的$m$,实际上就是告诉了我们要求什么东西,假设在已经有那$m$个涂色...

weixin_30821731的博客 196

等时替代模型( Isotemporal Substitution Model)

文献阅读:Associations of sedentary time and physical activity with adverse health conditions: Outcome-wide analyses using isotemporal substitution model(该论文于2022年4月28日发表在柳叶刀子刊 EClinicalMedicine 上)

姚巨龙的博客 1万+

用AI+Playwright实现零代码UI自动化测试:以登录页面为例的实战指南

本文详细介绍了如何利用AI与Playwright结合实现零代码UI自动化测试,特别以登录页面为例进行实战演示。通过自然语言描述生成测试脚本,大幅降低技术门槛,提升测试效率,并支持跨浏览器验证。适合非技术人员快速上手专业级自动化测试。

weixin_28842269的博客 401

HDU4336. Card Collector(期望DP/容斥定理)

题目链接:https://vjudge.net/contest/373128#problem/H 题意:收集卡片,给出每一张卡片的抽取概率,问预期抽多少次才能够全部收集完 解题思路: 第一种:利用期望DP 先说一下期望的递推公式 i/n为抽到已经有的情况的概率 f[i]为当前状态,f[i+1]为下一个状态,1为代价值(无论能否成功转移都要1次机会)。 转化可以得到 本题的递推公式是这样:f[i]=∑p[ i→j ]f[ j ]+∑(1-p[ i→j ])f[ i ]+w[ i→j ] 利用二进制表示所有

Buyi的博客 363

vivado 工程修改芯片型号

vivado工程芯片与实际板子不匹配时,需要修改工程的芯片型号,并对原工程的ip进行同步更新,之后生成新的bit文件,烧录到板子中

k7126685的博客 1万+

概率DP/期望DP总结

概述 一般来说,概率DP找到正确的状态定义后,转移是比较容易想到的。但状态一定是“可数”的,把有范围的整数作为数组下标。事实上,将问题直接作为状态是最好的。如问“n人做XX事的期望次数”,则设计状态为f[i]表示i个人做完事的期望。转移一般是递推,即从上一个状态转移得(填表)或转移向下一个状态(刷表)。 练习题 涂格子1 n个格子,每次随机涂一个,求涂满m个格子的期望次数。 如概述所...

myjs999的博客 1万+

AFSim插件开发实战:从环境搭建到功能扩展

本文详细介绍了AFSim插件开发的完整流程,从环境搭建到功能扩展,涵盖了SDK配置、插件创建、核心代码解析、功能扩展实战、调试优化以及高级开发技巧。通过实战案例和实用技巧,帮助开发者快速掌握AFSim插件开发,提升仿真系统的扩展性和灵活性。

weixin_29309475的博客 576

使用 Prometheus 监控 Spring Boot 应用

本文介绍了使用SpringBoot+Prometheus+Grafana实现应用监控的方案。首先在SpringBoot项目中集成Micrometer和Actuator组件,通过配置暴露Prometheus监控端点。接着配置Prometheus采集应用指标数据,并通过Grafana可视化展示。具体步骤包括:1)SpringBoot集成Micrometer;2)配置Prometheus抓取应用指标;3)安装Grafana并导入SpringBoot监控模板;4)展示JVM和业务指标。该方案可以实现对SpringB

蔡定努 430

期望|组合数学|概率

计算期望可能通过递推,也可以通过期望的定义。 我们要牢牢把握概率和组合的关系,优化能提前求解

2203_75425800的博客 539

物流分拣YOLO实战:YOLO26 OBB+YOLOv8多尺度融合,不规则包裹分拣效率提升40%(附训练+部署代码)

在物流分拣的工业场景中,模型的检测精度、推理速度、部署友好性本次基于YOLO26 OBB+YOLOv8多尺度融合打造的物流分拣视觉检测方案,精准解决了工业场景中不规则包裹的旋转检测、多尺度包裹的漏检问题,最终实现分拣效率提升40%,检测准确率提升至95%以上,且模型在边缘设备上的推理帧率稳定35FPS+,完全适配物流分拣的工业落地需求。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 881

数学期望dp

dp求数学期望时往往是在上一个状态求完期望后,加上新状态的要求再求期望,但每次求dp时所乘的所有概率要等于1 https://www.cnblogs.com/hua-dong/p/8166093.html 数学期望 P=Σ每一种状态*对应的概率。 因为不可能枚举完所有的状态,有时也不可能枚举完,比如抛硬币,有可能一直是正面,etc。在没有接触数学期望时看到数学期望的题可能会觉得很阔怕(因为我...

weixin_42165786的博客 1224

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【期望】【DP】数学期望总结(ing)

LightOJ - 1027 A Dangerous Maze

FFOYeah的博客 638

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

BZOJ 1426: 收集邮票 数学期望_DP

BZOJ 1426: 收集邮票 数学期望_DP Code: #include <bits/stdc++.h> using namespace std; double n,f[10010],s[10010]; int main() { scanf("%lf",&n); for(int i=n-1...

EM LGH 164

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

BZOJ 1426: 收集邮票 数学期望 + DP

Description 有n种不同的邮票,皮皮想收集所有种类的邮票。唯一的收集方法是到同学凡凡那里购买,每次只能买一张,并且 买到的邮票究竟是n种邮票中的哪一种是等概率的,概率均为1/n。但是由于凡凡也很喜欢邮票,所以皮皮购买第k 张邮票需要支付k元钱。现在皮皮手中没有邮票,皮皮想知道自己得到所有种类的邮票需要花费的钱数目的期望。 Input 一行,一个数字N, N<...

weixin_30764137的博客 184

lightoj1038(数学期望dp)

题意:输入一个数N,N每次被它的任意一个因数所除 变成新的N 这样一直除下去 直到 N变为1 求变成1所期望的次数 解析: d[i] 代表从i除到1的期望步数;那么假设i一共有c个因子(包括1和本身) d[i] = ( d[1] + d[a2] + d[a3] + d[a4] ..... + d[i] + c) / c; (加c是因为每一个期望值都会加1,因为多出一步才变成它(即...

babing2770的博客 218

Codeforces 1855E 数学期望 + DP

根据数学期望的线性性质,可以独立地考虑每一个。的情况看作后者消失,则。对答案的贡献,则答案为。

neweryyy的博客 445

【区间dp+组合数+数学期望】Expression

https://www.bnuoj.com/v3/contest_show.php?cid=9148#problem/I 【题意】 给定n个操作数和n-1个操作符,组成一个数学式子。每次可以选择两个相邻操作数及中间的操作符进行运算,如a-b变成一个数(a-b),直到这个式子变成一个数。同一个初始式子可以进行不同的操作,最后的结果也可能不同。最后求不同操作得到结果的和(mod 1000 000 ...

weixin_30593443的博客 265

【数学期望】【LCA】【树形DP】树

树 题目大意 给你一棵有n个节点的树,以及m个询问,每个询问需要你回答一个点到另一个点要经过的期望边数

ssllyf的博客 638

【概率dp·数学期望·打表】Everything Is Generated In Equal Probability (HDU2019多校第二场)

题目传送门 题目还是非常有意思的 首先,由于这个排列非常的随机,取子序列的操作也很随机,所以答案应该与排列的长度有关 先不考虑递归,我们试着求一下长度为nnn的随机排列的逆序对的个数的期望 有两种思路(目前: 1.先确定排列的第一位 逆序对可以是由第一个数和后面的数产生的,也可以是后面的数自己产生的 后者是一个递归问题 所以我们只需要考虑第一种情况 然后加上长度为111~n−1n-1n−1的随机排...

岂曰无衣,与子同袍 532

codeforces1097D Makoto and a Blackboard 数学+期望dp

题目传送门 题目大意:   给出一个n和k,每次操作可以把n等概率的变成自己的某一个因数,(6可以变成1,2,3,6,并且概率相等),问经过k次操作后,期望是多少? 思路:数学和期望dp 好题好题!!   直接考虑n到因子很难做,所以要研究从n到因子的一些性质。   如果一个数可以写成,p^c这样的形式,并且p是质数,那么如果把这个数进行上述的操作,他可以变成的形式必然是p^...

weixin_30826761的博客 141

红牌就非常的好 [数学期望][概率DP]

红牌就非常的好 [数学期望][概率DP] 问题描述 桌面上有R张红牌和B张黑牌,洗牌后(随机打乱顺序)放在桌面上,开始一张一张地翻牌,翻到红牌得到1美元,黑牌则付出1美元。 可以随时停止翻牌,在最优策略下期望能得到多少钱。 输入格式 一行输入两个数R,B,其值在0到5000之间 输出格式 在最优策略下平均能得到多少钱。 输出答案时,与标准答案误差不超过10^-5,都会...

AnnieL 668

HDU3853 LOOPS 概率DP数学期望

HDU3853 LOOPS 概率DP 题目大意: 给出一个n * m的矩阵,要求从左上角走到右下角,每次移动消耗两点能量,并且每次的移动方向是有概率的(回到自身,往右或者往下)。输入的矩阵中的每个位置有三个数,分别表示回到自身、向右移动、向下移动的概率,三者概率和为1,要求输出从左上角走到右下角需要消耗的能量值的期望。(测试数据可能有点问题,会出现回到自身的概率为1从而导致死循环的情况) 解题思路...

qq_43710979的博客 976
上一篇: 2019浙江省赛部分题解
下一篇: 【Gym 101775】Problem L SOS(博弈)
Link_Ray
博客等级 码龄9年 44粉丝 156原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值