1778: [Usaco2010 Hol]Dotp 驱逐猪猡 题意:一个炸弹从1出发p/q的概率爆炸,否则等概率走向相邻的点.求在每个点爆炸的概率 高斯消元求不爆炸到达每个点的概率,然后在一个点爆炸就是\(\frac{f[i]}{sum}\) #include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #include <cmath> using na…
2337: [HNOI2011]XOR和路径 题意:一个边权无向连通图,每次等概率走向相连的点,求1到n的边权期望异或和 这道题和之前做过的高斯消元解方程组DP的题目不一样的是要求期望异或和,期望之间不能异或所以不能直接求 发现每个二进制位是独立的,我们可以一位一位考虑,设当前考虑第i位 \(f[u]\)表示从u到n异或和为1的概率, \[ f[u] = \sum_{(u,v) \in E,\ w(u,v)的第i位是1} \frac{f(v)}{degree_u} \\ f[u] = \sum_…
首先来个期望的论文,讲的非常好,里面也提到了使用线性方程组求解,尤其适用于有向图的期望问题. 算法合集之<浅析竞赛中一类数学期望问题的解决方法> http://www.lightoj.com/volume_showproblem.php?problem=1151 题意:有个1~100个格子的地图,每次投骰子,点数1~6,问到达第100格所需的投骰子次数期望值是多少,注意如果最后走的点数超出了地图,不算完成.地图中有传送门,a b表示从第a格可以到b格. 思路:首先可以想到DP的转移有两种,如果…
题意: 有一个N行M列的矩阵,机器人最初位于第i行和第j列.然后,机器人可以在每一步都转到另一个单元.目的是转到最底部(第N个)行.机器人可以停留在当前单元格处,向左移动,向右移动或移动到当前位置下方的单元格.如果机器人在最左侧的列中,则不能向左移动:如果机器人在最右侧的列中,则不能向右移动.在每一步中,所有可能的移动都是同等可能的.返回到达最底行的预期步数. 代码+题解: #include<stdio.h> #include<string.h> #include<math.…
看到题面的那一刻,我是绝望的ORZ 图论加概率期望加好像不沾边的高斯消元???我人直接傻掉 还没学过概率期望的我果断向题解屈服了(然后还是傻掉了两节课来找线性方程.. Description 奶牛们建立了一个随机化的臭气炸弹来驱逐猪猡.猪猡的文明包含1到N (2 <= N <= 300)一共N个猪城.这些城市由M (1 <= M <= 44,850)条由两个不同端点A_j和B_j (1 <= A_j<= N; 1 <= B_j <= N)表示的双向道路连接.…
题目来源:UVa 10828 Back to Kernighan-Ritchie 题意:从1開始 每次等概率从一个点到和他相邻的点 有向 走到不能走停止 求停止时每一个点的期望 思路:写出方程消元 方程有唯一解 多解 无解的情况 有环 一直再环里无法停止算无穷大 从1不能到的点期望为0 #include <cstdio> #include <cstring> #include <algorithm> #include <vector> #include &l…
题目大意: 每条路径上有一个距离值,从1走到N可以得到一个所有经过路径的异或和,求这个异或和的数学期望 这道题直接去求数学期望的DP会导致很难列出多元方程组 我们可以考虑每一个二进制位从1走到N的平均概率值 因为整个图是联通的那么所有点都默认会处于多元方程组中 Pi = p[i] * sigma( v&d[i][j]?(1-Pj):Pj) v是当前二进制位代表的数值 这里需要注意的是自环的加边情况,自环只加一次边,不能向平时那样加无向边一样 #include <cstdio> #inc…
思路: 在没有梯子与蛇的时候很容易想到如下公式: dp[i]=1+(∑dp[i+j])/6 但是现在有梯子和蛇也是一样的,初始化p[i]=i; 当有梯子或蛇时转移为p[a]=b; 这样方程变为: dp[i]=1+(∑dp[p[i+j]])/6 再就是注意当i+j>100时,停在原地不变. 代码如下: #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #includ…
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=3640题解: 期望dp,高斯消元 设dp[i][h]在i位置且血量为h这个状态的期望经过次数. 因为每当到达n点就停止游戏,所以到达终点的概率就是dp[n][1]+dp[n][2]+...+dp[n][hp] 可以按血量把dp分成若干个层次,我们希望这样分层次后就可以把问题转变为DAG上的dp, 可是存在伤害值为0的点,所以我们对于每一层列出来的n的dp计算式,是可能存在环的. 所以要用高斯…
[BZOJ 4820] [SDOI2017] 硬币游戏(高斯消元+概率论+字符串hash) 题面 扔很多次硬币后,用H表示正面朝上,用T表示反面朝上,会得到一个硬币序列.比如HTT表示第一次正面朝上,后两次反面朝上. 选出n个同学,每个同学猜一个长度为m的序列,当某一个同学猜的序列在硬币序列中出现时(匹配时的序列必须连续),就不再扔硬币了,并且这个同学胜利.猜的n个序列两两不同. 假设硬币正反面朝上的概率相同,求每个同学胜利的概率. \(n \leq 300\) 分析 (注意,本题中不区分序列和…