2707: [SDOI2012]走迷宫 题意:求s走到t期望步数,\(n \le 10^4\),保证\(|SCC| \le 100\) 求scc缩点,每个scc高斯消元,scc之间直接DP 注意每次清空系数矩阵 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> using namespace std; typ…
题目描述 传送门 分析 首先判掉 \(INF\) 的情况 第一种情况就是不能从 \(s\) 走到 \(t\) 第二种情况就是从 \(s\) 出发走到了出度为 \(0\) 的点,这样就再也走不到 \(t\) 然后我们去考虑 \(60\) 分的做法 我们设 \(dp[u]\) 为当前在点 \(u\) 走到点 \(t\) 的期望步数 那么就有 \(dp[u]=\sum_{u->v}^v((dp[v]+1) \times \frac{1}{rd[u]})\) 移项之后就变成了 \(dp[u]-\sum_…
题面传送门 之所以写个题解是因为题解区大部分题解的做法都有 bug(u1s1 周六上午在讨论区里连发两个 hack 的是我,由于我被禁言才让 ycx 代发的) 首先碰到这种期望题,我们套路地设 \(dp_u\) 为从节点 \(u\) 走到节点 \(n\) 经过的节点数的期望值,那么显然有转移方程 \(dp_u=\dfrac{1}{deg_u}(\sum\limits_{(u,v)\in E}dp_v)+1\),由于这个 \(dp\) 方程存在环,故需按照 P3232 游走 的套路进行高斯消元,具…
题意 题目链接 Sol 设\(f[i]\)表示炸弹到达\(i\)这个点的概率,转移的时候考虑从哪个点转移而来 \(f[i] = \sum_{\frac{f(j) * (1 - \frac{p}{q})}{deg(j)}}\) \(f[1]\)需要+1(炸弹一开始在1) // luogu-judger-enable-o2 #include<bits/stdc++.h> #define Pair pair<int, int> #define MP(x, y) make_pair(x,…
qwq 一开始想了个错的做法. 哎 直接开始说比较正确的做法吧. 首先我们考虑题目的\(ans\)该怎么去求 我们令\(x\)表示原图中的某一条边 \[ans = \sum \prod_{x\in tree} p_x \prod_{x\ not\in tree} (1-p_x) \] qwq而根据矩阵树定理,我们可以求出来所有生成树的边权乘积的和,也就是前一部分. 现在我们考虑应该怎么优化第二部分. qwq 我们经过推理能发现,我们可以用总的除去在生成树里面的求出来不在生成树里面的. 也就是说…
[BZOJ3143]游走(高斯消元,数学期望) 题面 BZOJ 题解 首先,概率不会直接算... 所以来一个逼近法算概率 这样就可以求出每一条边的概率 随着走的步数的增多,答案越接近 (我卡到\(5000\)步可以拿\(50\)分) #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<algorith…
传送门 所以说我讨厌数学……期望不会高斯消元也不会……好不容易抄好了高斯消元板子被精度卡成琪露诺了…… 首先,我们先算出走每一条边的期望次数,那么为了最小化期望,就让大的期望次数乘上小编号 边的期望次数是多少呢?可以先算出点的概率 $p(u,v)=\frac{p[u]}{d[u]}+\frac{p[v]}{d[v]}$ $p[u]$表示经过这个点的期望次数,$d[u]$表示这个点的度数 那么点的期望次数怎么求? $p[u]=\sum_{(u,v)\in E}\frac{p[v]}{d[v]}$…
纪念首道期望题(虽说绿豆蛙的归宿才是,但是我打的深搜总觉得不正规). 我们求出每条边的期望经过次数,然后排序,经过多的序号小,经过少的序号大,这样就可以保证最后的值最小. 对于每一条边的期望经过次数,其实是从它起点和终点来的.设f[]为每个点经过的期望,out[]为每个点的出度 设一条边,起点为u,终点为v.那么它的期望经过次数为f[u]/out[u]+f[v]/out[v] 这样问题就转化为求每个点的期望经过次数了 对于起点,一开始经过一次,也可能从其他点走过来. f[1]=1+sigma(f…
题目:https://loj.ac/problem/2542 可以最值反演.注意 min 不是独立地算从根走到每个点的最小值,在点集里取 min ,而是整体来看,“从根开始走到点集中的任意一个点就停下”的期望步数. 设 f[ i ] 表示从根走到 i ,再走期望几步就能走到点集中的某个点.有 \( f[i]=\frac{1}{d[i]}\sum\limits_{j}(f[j]+1) \) ( j 是和 i 有边的点) 于是要“树上高斯消元”.其实就是尝试写成 \( f[i]=a[i]*f[st]…
[题意]给定n个点m条边的无向连通图,每条路径的代价是其编号大小,每个点等概率往周围走,要求给所有边编号,使得从1到n的期望总分最小(求该总分).n<=500. [算法]期望+高斯消元 [题解]显然,应使经过次数越多的边编号越小,问题转化为求每条边的期望经过次数. 边数太多,容易知道f(u,v)=f(u)/out(u)+f(v)/out(v),所以转化为求每个点的期望经过次数,这就是驱逐猪猡了. 设f[x]表示点x的期望经过次数,根据全期望公式(讨论“经过“的问题不能依赖于下一步): $$f[x…