![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
概率DP
FSYo
我不去想是否能够成功,
既然选择了远方,
便只顾风雨兼程
展开
-
HNOI2015 亚瑟王(概率DP)
传送门 考虑对每张牌求出出掉它的概率那么期望就可以轻易算出 一张牌被考虑的次数与考虑到它的轮数有关,而考虑到一个点的轮数与前面选了几张牌有关 于是令 f[i][j]f[i][j]f[i][j] 表示 rrr 轮中,第 iii 个之前及 iii 选了 jjj 个的概率 那么一张牌最后出出去的概率就是 pi=∑j=0i−1f[i−1][j]∗(1−(1−p)r−j)p_i=\sum_{j=0}^{i-...原创 2019-12-18 18:06:57 · 195 阅读 · 0 评论 -
「THUWC 2017」随机二分图(状压DP)(概率DP)
传送门 首先有 40pts40pts40pts 暴力就是枚举排列算概率,还有就是直接状压 f[i][S]f[i][S]f[i][S] 表示左边选到 iii 右边集合为 SSS 的概率 想一想,最后求的是什么,就是我们钦定一些边必须选使得有完美匹配,然后将这些边一起出现的概率乘起来作为贡献 把 1 类边和 2 类边都拆成 0 类边 考虑若最后钦定的边中 1 类的两条同时出现,那么它们两个的贡献是 1...原创 2019-12-11 19:09:20 · 259 阅读 · 1 评论 -
SHOI2014 概率充电器(树形DP)(概率DP)(容斥)
传送门 好题啊!很明显要从子树算一遍,然后从父亲算一遍 令 f(u)f(u)f(u) 表示直接充上电或从子树充上电的概率 概率合并需要容斥一下 P(A∣B)=P(A)+P(B)−P(A)∗P(B)P(A|B)=P(A)+P(B)-P(A)*P(B)P(A∣B)=P(A)+P(B)−P(A)∗P(B) 然后将 f(u)f(u)f(u) 扩展到可以从父亲走过来 显然如果是从父亲走过来不能是自己走上去在...原创 2019-12-11 18:45:58 · 178 阅读 · 0 评论 -
CSP-S 模拟 七十和十七 (期望DP)(找规律)
传送门 瞪一下样例发现,每次排好序都是先把 n−1n-1n−1 位排好序,再排第 nnn 位 如果我们令 fn−1f_{n-1}fn−1 表示到 n−1n-1n−1 的所有排列的计数次数,然后算出第 nnn 位的新增贡献就可以递推了 手玩一下发现如果 an=na_n=nan=n 不需要归位,否则需要 2ai−12^{a_i-1}2ai−1 次 然后就可以枚举最后一个填什么转移,发现是个等比数...原创 2019-11-07 11:40:19 · 141 阅读 · 0 评论 -
NOI2017 泳池 [DP] [线性递推]
传送门 第一步转换:求恰好为 k 的转换成 ≤k\le k≤k 的减去 ≤k−1\le k-1≤k−1 的 考虑 dpdpdp,令 fif_{i}fi 表示宽度为 iii 的答案 枚举第一个断点到iii 的长度,fi=∑j=0i−1fi−j−1∗gj∗(1−p)f_i=\sum_{j=0}^{i-1}f_{i-j-1}*g_j*(1-p)fi=∑j=0i−1fi−j−1∗gj∗(1−p)...原创 2019-10-13 18:15:06 · 154 阅读 · 0 评论 -
NOIP模拟19/07/20
WOJ4615 最大公约数 考虑答案 x 可以在多少个子集存在,我们可以先求出x的倍数的个数cnt 显然 2 ^ cnt - 1 就是所有子集的个数,但是我们同时算上了 2x, 3x ... 的答案,所以要减掉 注意指数要对 Mod-1 取模 #include<bits/stdc++.h> #define N 100050 using namespace std; typed...原创 2019-07-20 23:29:37 · 242 阅读 · 0 评论 -
[清华集训 2017]小 Y 和恐怖的奴隶主 [概率DP+矩阵乘法]
传送门 我开始想把8个随从的血压成一个状态... 其实不然, 我们不需要知道每个随从的血的情况, 我们只需要知道 血为 1/ 2/ 3的个数 表示有 i 个血为1, j 个血为2, k 个血为 3, 还剩 now 次攻击次数打到的期望 我们把3维压成一维, 大概 165 的状态, 我们预处理 j 状态 可以转移到 i 状态, 然后矩阵乘法 考虑后面那个加一怎么办, 我们加一维表示 ...原创 2019-07-15 11:25:41 · 224 阅读 · 0 评论 -
CF908D New Year and Arbitrary Arrangement [概率DP]
传送门 f[i][j] 表示有 i 个 a, j 个 ab 的期望, 设 A 为选 a的概率, B 为选 b 的 如果 i + j >= k 那么再放一个 b 就可以结束, 这种情况的期望就是 转移的话 初始状态如果是 0, 0 的话 显然会死循, 因为一开始可能为 bbbbbbb... 但由于 A = 1 - B, 所以上面那个式子等价于 所以初始状态设为 f...原创 2019-07-15 11:12:53 · 151 阅读 · 0 评论 -
[BJOI2018]治疗之雨 [概率DP]
传送门 首先设k次中打中i次的概率为 p[i] 设 f[i] 为 还剩 i 滴血挂掉的期望 发现跟 f[i+1] 和 f[i] 有关, 已经可以高斯消元了, 但是 n <= 1500, 显然需要优化 好像有个高斯消元利用这道题的性质优化成 n^2 的, 但是我不会... 我们发现, 如果把第一个式子的 f[i+1] 提出来, f[i+1] 就只和f[i], f[i-1]...原创 2019-07-15 11:06:48 · 171 阅读 · 0 评论 -
[PKUWC2018]随机算法 [概率DP+状压DP]
传送门 看到 n <= 20 应该想到状压 ! 每个点有3个状态, 被考虑过在集合中, 被考虑过不在集合中, 没有被考虑过 很明显状态太多, 我们看怎么压成两个状态 首先在集合中必须要, 状态设为1, 那么不在集合中, 不管有没有考虑我们都设成0 换句话说, 不能放进集合的点我们不需要知道它是谁, 只需要知道个数就可以了 我们设 f[i][S] 表示考虑了 i 个点, 集合为 S...原创 2019-07-15 10:51:00 · 131 阅读 · 0 评论 -
[PKUWC2018] Minimax [概率DP]
传送门 考虑向上合并 ! 考虑一个数, 合并上去是它的概率 ---- 它到当前点本身的概率 p * ( 另一棵子树比它小的概率和 * 选大的概率 +另一棵子树比它大的概率和 * 选小的概率 ) 想到了线段树合并, 每个节点表示选当前区间的概率的和, 边往下走边统计和 也就是 , 最后乘到 i 上面去 怎么统计呢 ? 我们记x这颗线段树的贡献为 sx, y这颗的为 sy, 现在合并...原创 2019-07-15 10:42:58 · 125 阅读 · 0 评论 -
[SHOI2014]概率充电器 [概率DP]
传送门 我们算每个点能被充上电的概率, 最后加起来就是期望, 但如果直接算的话不是很好算 我们考虑先算每个点不被冲上点的概率, 那么就把从父亲不能充上电, 从儿子不能充上电, 自己本身不充上电的概率乘起来 f[i] 表示从son不能充上电, 且自己本身就充不上点的概率 g[i] 表示从父亲不能充上电的概率 h[i] 表示不能给父亲充电的概率 g[i] 有些麻烦, 我们先算父亲充...原创 2019-07-15 10:28:29 · 141 阅读 · 0 评论 -
[ZOJ3329] One Person Game [概率DP]
题目描述 有三个骰子,分别有k1,k2,k3个面。 每次掷骰子,如果三个面分别为a,b,c则分数置0,否则加上三个骰子的分数之和。 当分数大于n时结束. 求游戏的期望步数. 初始分数为0 表示已经有了 i 分, 到 n 的期望步数 发现 每个 f 都可以用 f[0] 来表示 不妨设, 带到上面 递推到最后一步时, 解出 f[0] 就是答案 #include<b...原创 2019-07-15 10:18:08 · 164 阅读 · 0 评论