思路: dp[i]表示当前在已经投掷出i个不相同/相同这个状态时期望还需要投掷多少次 对于第一种情况有: dp[0] = 1+dp[1] dp[1] = 1+((m-1)*dp[1]+dp[2])/m dp[i] = 1+((m-1)*dp[1]+dp[i+1])/m …… dp[n] = 0 可以得到:dp[n-1]=m*dp[n]+1 所以dp[0]=(m^n-1)/(m-1)也即是第一种的答案! 对于第二种情况有: dp[0]=1+dp[1] dp[1]=1+(dp[1]+(m-1)*dp…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4652 题意: 给你一个有m个面的骰子. 两种询问: (1)"0 m n": “最后n次点数均相同”的投掷次数期望. (2)"1 m n": “最后n次点数各不相同”的投掷次数期望. 题解: 表示状态: dp[i] = expectation (当前已经有i个点数相同/不相同) 找出答案: ans = dp[0] 如何转移: 一.都相同 (1)dp[i] = dp[i+1…
版权声明:欢迎关注我的博客,本文为博主[炒饭君]原创文章,未经博主同意不得转载 https://blog.csdn.net/a1061747415/article/details/36685493 Dice Problem Description You have a dice with m faces, each face contains a distinct number. We assume when we tossing the dice, each face will occur r…
嘟嘟嘟 题目大意就是对于一个m面的骰子,回答这么两个问题: 1.求连续扔n次都是同一数字的期望次数. 2.求连续扔n次每一次数字都不相同的期望次数. 对于期望dp特别菜的我来说,这道题已经算是很难了.反正是抠了一天…… 我们先看第一问. 令fi表示连续 i 次数字都相同的期望,那么要考虑他能转化到什么状态,而不是由什么状态转化过来. 转化到什么状态要考虑到所有情况:包括扔的数字相同的和不同两种情况,于是转移方程就写出来了: fi = 1 / m * fi+1 + (m - 1) / m * f1…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4652 题意:一个m个面的筛子.两种询问:(1)平均抛多少次后使得最后n次的面完全一样:(2)平均抛多少次后使得最后n次的面完全不同? 思路:设dp[i]表示i次完全相同.不同时还需要抛的次数期望. (1)下面首先讨论完全相同的情况. (2)完全不同的情况: i64 Pow(int n,int m){    i64 ans=1,x=n;    while(m)    {        if(m&1)…
poj 2096 题目:http://poj.org/problem?id=2096 f[ i ][ j ] 表示收集了 i 个 n 的那个. j 个 s 的那个的期望步数. #include<cstdio> #include<cstring> #include<algorithm> #define db double using namespace std; ; db n,s,f[N][N]; int main() { scanf("%lf%lf"…
思路: 1.求f[n];dp[i]表示i个连续相同时的期望 则 dp[0]=1+dp[1]     dp[1]=1+(5dp[1]+dp[2])/6     ……     dp[i]=1+(5dp[1]+dp[i+1])/6     ……     dp[n]=0 可以求得f[n]=(6^n-1)/5. 2.求h[n];dp[i]表示i个连续相同的1时的期望 则 dp[0]=1+(5dp[0]+dp[1])/6     dp[1]=1+(5dp[0]+dp[2])/6     ……     dp[…
When wake up, lxhgww find himself in a huge maze. The maze consisted by N rooms and tunnels connecting these rooms. Each pair of rooms is connected by one and only one path. Initially, lxhgww is in room 1. Each room has a dangerous trap. When lxhgww…
(1)https://vjudge.net/problem/SPOJ-FAVDICE 题意:有一个n面的骰子,每一面朝上的概率相同,求所有面都朝上过至少一次的总次数期望. 题解:令dp[i]表示 i 面满足条件的期望次数,则有 dp[i]=$\sum_{j=1}^{i-1}$(Pj*(本次操作对最终期望的贡献+dp[i]))+$\sum_{j=1}^{n-(i-1)}$(Qj*(本次操作对最终期望的贡献+dp[i-1])),其中Pj表示出现已经出现过数字的概率,由于是等概率事件,所以这里所有的P…
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3853 LOOPS Time Limit: 15000/5000 MS (Java/Others)Memory Limit: 125536/65536 K (Java/Others) 问题描述 Akemi Homura is a Mahou Shoujo (Puella Magi/Magical Girl). Homura wants to help her friend Madoka save t…
有 0到 n 个格子.掷骰子走路,求出到终点的数学期望,有飞行的路线. dp[i] 存储在i位置走到终点的期望. 转移方程dp[i]=(dp[i+1] ----> dp[i+6])/6+1; 有飞行路线则直接赋值 #include "stdio.h" #include "string.h" double dp[100010]; int hash[100010]; int main() { int n,m,x,y,i,j; while (scanf("…
题意:给定三个表达式,问你求出最小的m1,m2,满足G(m1) >= F(n), G(m2) >= G(n). 析:这个题是一个概率DP,但是并没有那么简单,运算过程很麻烦. 先分析F(n),这个用DP来推公式,d[i],表示抛 i 次连续的点数还要抛多少次才能完成.那么状态转移方程就是 d[i] = 1/6*(1+d[i+1]) + 5/6*(1+d[1]), 意思就是说在第 i 次抛和上次相同的概率是1/6,然后加上上次抛的和这一次,再加上和上次不同的,并且又得从第1次开始计算. 边界就是…
题目链接 (直接)设\(F(i)\)为在\(i\)点走出迷宫的期望步数.答案就是\(F(1)\). 令\(p_i=1-k_i-e_i\),表示\(i\)点沿着边走的概率:\(d_i=dgr[i]\),即点\(i\)度数. 每个点有三种状态,即\[F(i)=k_i\times F(1)+e_i\times 0+\frac{p_i}{d_i}\sum_{v=to[i]}(F(v)+1)\] 要高斯消元吗..很重要的一点是图是一棵树.所以叶节点只由父节点(和\(1\))转移而来,而父节点的转移中需要叶…
也许更好的阅读体验 \(\mathcal{Description}\) 一个\(n\)面的骰子,求期望掷几次能使得每一面都被掷到 输入有\(T\)组数据,每次输入一个\(n\) 输出保留两位小数 \(\mathcal{Solution}\) 设\(f[i]\)表示已经掷到过\(i\)面,还 期望掷多少次骰子使每一面都被掷到 现在掷一次骰子,有两种情况 有\(\frac{i}{n}\)的概率掷到已经掷到过的面,此时仍然还要掷\(f[i]\)次骰子 有\(\frac{n-i}{n}\)的概率掷到没掷…
期望\(DP\) 方法总结 这个题目太大了,变化也层出不穷,这里只是我的一点心得,不定期更新! 1. 递推式问题 对于无穷进行的操作期望步数问题,一般可用递推式解决. 对于一个问题\(ans[x]\), 我们可以考虑建立逻辑转移: \[ans[now] = Merge(\ \ Function(ans[now])\ ,\ Function(ans[other])\ \ )\] 那么我们进行移项后, \[ans[now]\ Delete\ Function(ans[now])\ \ =\ \ Fu…
正解:期望$dp$ 解题报告: 传送门$QwQ$ 阿关于题目里那个形如$ab$的子序列我说下,,,我我我之前$get$了好久$QAQ$.这里子序列的个数的定义是这样儿的,举个$eg$,$aabb$,就有4个形如$ab$的子序列. 然后考虑$dp$?设$f_{i,j}$表示前缀中有$i$个$a$,$j$个$ab$的停止后的期望长度?然后为了后面表达方便设$A=\frac{p_a}{p_a+p_b},B=\frac{p_b}{p_a+p_b}$. 不难推出转移方程就$f_{i,j}=f_{i+1,j…
P1291 [SHOI2002]百事世界杯之旅 声明:本博客所有题解都参照了网络资料或其他博客,仅为博主想加深理解而写,如有疑问欢迎与博主讨论✧。٩(ˊᗜˋ)و✧*。 题目描述 "--在 \(2002\) 年 \(6\) 月之前购买的百事任何饮料的瓶盖上都会有一个百事球星的名字.只要凑齐所有百事球星的名字,就可参加百事世界杯之旅的抽奖活动,获得球星背包,随声听,更克赴日韩观看世界杯.还不赶快行动!" 你关上电视,心想:假设有 \(n\) 个不同的球星名字,每个名字出现的概率相同,平均需…
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4405 Aeroplane chess Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others) 问题描述 Hzz loves aeroplane chess very much. The chess map contains N+1 grids labeled from 0 to N. Hzz s…
题目:http://poj.org/problem?id=2096 题目好长...意思就是每次出现 x 和 y,问期望几次 x 集齐 n 种,y 集齐 s 种: 所以设 f[i][j] 表示已经有几种,转移一下即可. 代码如下: #include<cstdio> #include<cstring> #include<algorithm> using namespace std; typedef double db; ; int n,s; db f[xn][xn]; in…
BZOJ_2134_单选错位——期望DP 题意: 分析:设A为Ai ∈ [1,ai+1] 的概率,B为Ai = A(imodn+1)的概率显然P(A|B) = 1,那么根据贝叶斯定理P(B) = P(B|A)*P(A)P(A) = min(ai,ai+1)/aiP(B|A) = 1/a(i+1)P(B) = min(ai,ai+1)/(ai*a(i+1))又因为期望的可加性,直接加起来统计答案 代码: #include <stdio.h> #include <string.h> #…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3853 题意: 有一个n*m的网格. 给出在每个格子时:留在原地.向右走一格,向下走一格的概率. 每走一格会消耗2点体力. 问你从(1,1)到达终点(n,m)消耗体力的期望. 题解: 表示状态: dp[i][j] = rest steps(剩余路程花费体力的期望) i,j:现在的位置 找出答案: ans = dp[0][0] 如何转移: 期望dp的套路:考虑子期望... now: dp[i][j] 能…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6656 题意: 有 1~n 个等级,你现在是1级,求升到n级的花费期望.会给你n个条件(i~i+1级升级所需花费,升级成功概率a/b,失败的话降为x级). 思路: 期望DP我一般不怎么会,一般都是从 dp[n] 开始转移到 dp[0] 的,但是这题是简单题,从1到n递推就行了(但是赛场是就是不会做). 我们设 dp[i] 是从 dp[i-1] 到 dp[i] 所需的花费期望值. 然后要知道有 a/b…
题目链接:LightOJ - 1248 Description Given a dice with n sides, you have to find the expected number of times you have to throw that dice to see all its faces at least once. Assume that the dice is fair, that means when you throw the dice, the probability…
2019 杭电多校 7 1011 题目链接:HDU 6656 比赛链接:2019 Multi-University Training Contest 7 Problem Description Cuber QQ always envies those Kejin players, who pay a lot of RMB to get a higher level in the game. So he worked so hard that you are now the game design…
题意:有N(1<=N<=20)张卡片,每包中含有这些卡片的概率,每包至多一张卡片,可能没有卡片.求需要买多少包才能拿到所以的N张卡片,求次数的期望. 析:期望DP,是很容易看出来的,然后由于得到每张卡片的状态不知道,所以用状态压缩,dp[i] 表示这个状态时,要全部收齐卡片的期望. 由于有可能是什么也没有,所以我们要特殊判断一下.然后就和剩下的就简单了. 另一个方法就是状态压缩+容斥,同样每个状态表示收集的状态,由于每张卡都是独立,所以,每个卡片的期望就是1.0/p,然后要做的就是要去重,既然…
期望DP算是第一题吧...虽然巨水但把思路理理清楚总是好的.. 题意:在一个1×n的格子上掷色子,从0点出发,掷了多少前进几步,同时有些格点直接相连,即若a,b相连,当落到a点时直接飞向b点.求走到n或超出n期望掷色子次数 SOL: 期望DP还是显然的,从后往前推也是显然的——这个题目能比较好地理解为什么要从后往前推.概率DP每个状态都在当前已知的概率下推出——最基本事件的概率往往都是已知的,而期望不同,从头开始,头的期望步数是根本不可知的,一旦遇上不可行状态极难处理,而从后往前推,最后一个状态…
[题意]有n道题,第i道题有ai个选项.把第i道题的正确答案填到第i+1道题上(n填到1),问期望做对几道题.n<=10^7. [算法]期望DP [题解]正确答案的随机分布不受某道题填到后面是否正确影响,因此每道题对的期望都是独立的. 从排列的角度分析,对每道题有a[i-1]个选择和a[i]个选项,共a[i-1]*a[i]种排列,其中只有min(a[i-1],ai)种排列使这道题正确,所以 $$E(i)=\frac{Min(a[i-1],a[i])}{a[i-1]*a[i]}=\frac{1}{…
题意:初始状态在(1,1)的位置.目标是走到(n,n).每次仅仅能向下向右或者不移动.已知在每一个格子时这三种情况的概率,每移动一步消耗2的魔力,求走到终点的使用的魔力的期望. 分析:简单的期望dp,套用之前的框架.可是这题不是+1,而是+2,由于每次多加的那个数字是走一步的消耗.这里是2! 注意p1[i][j]==1时不能计算dp[i][j],看式子就知道了.分母不能为0. 代码: #include<iostream> #include<cstdio> using namespa…
1. 题目描述对于m面的骰子.有两种查询,查询0表示求最后n次摇骰子点数相同的期望:查询1表示最后n次摇骰子点数均不相同的期望. 2. 基本思路由期望DP推导,求得最终表达式.(1) 查询0    不妨设$dp[k]$表示当前已经有k次相同而最终实现n次相同的期望.    \begin{align}        dp[0] &= 1 + dp[1]  \notag \\        dp[1] &= 1 + \frac{1}{m}dp[2] + \frac{m-1}{m}dp[1] …
前言: 最近连考两场期望dp的题目,sir说十分板子的题目我竟然一点也不会,而且讲过以后也觉得很不可改.于是开个坑. 1.晚测10 T2 大佬(kat) 明明有\(O(mlog)\)的写法,但是\(m\)等于\(500\)就让人十分迷惑.当然我并没有推出来 以下式子来自这里 emm,目前觉得DeepinC的式子最好理解,也最好写 其实我就看懂了一个 下面的\(m^k\)显然是总方案数,后面乘的\((n-k+1)\)提醒我们这个式子是在枚举每一个区间. 至于分子上的东西, 从\(1\)到\(m\)…