题解: 异或操作是每一位独立的,所以我们可以考虑每一位分开做. 假设当前正在处理第k位 那令f[i]表示从i到n 为1的概率.因为不是有向无环图(绿豆蛙的归宿),所以我们要用到高斯消元. 若有边i->j 权值为w,若w的k位为0,则f[i]+=1/du[i] * f[j],否则f[i]+=(1-f[j])/du[i] 注意我们现在在往回走,所以度数是i的而不是j的. 然后就可以高斯消元解出来了. 装X用模方程的lcm然后发现导致误差越来越大,WA出翔 代码: #include<cstdio&g…
+++++++++++++++++++++++++++++++++++++++++++ +本文作者:luyouqi233. + +欢迎访问我的博客:http://www.cnblogs.com/luyouqi233/+ +++++++++++++++++++++++++++++++++++++++++++ —————————————————————————————————————————— http://www.lydsy.com/JudgeOnline/problem.php?id=2337…
Description 给定一个无向连通图,其节点编号为 1 到 N,其边的权值为非负整数.试求出一条从 1 号节点到 N 号节点的路径,使得该路径上经过的边的权值的“XOR 和”最大.该路径可以重复经过某些节点或边,当一条边在路径中出现多次时,其权值在计算“XOR 和”时也要被重复计算相应多的次数. 直接求解上述问题比较困难,于是你决定使用非完美算法.具体来说,从 1 号节点开始,以相等的概率,随机选择与当前节点相关联的某条边,并沿这条边走到下一个节点,重复这个过程,直到走到 N 号节点为止,…
直接不容易算,考虑拆成位处理. 设f[i]表示i到n的期望路径异或和(仅考虑某一位),则$f[y]=\sum\limits_{exist\ x1\to y=0}\frac{f[x1]}{d[x1]}+\sum\limits_{exist\ x2\to y=1}\frac{1-f[x2]}{d[x2]}$. 对于重边,直接在系数上+1即可.对于自环,只计算一次度数即可. #include<cstdio> #include<cstring> #include<iostream&g…
题目 题解 突然get到这样路径期望的题目八成是高斯消元 因为路径上的dp往往具有后效性,这就形成了一个方程组 对于本题来说,直接对权值dp很难找到突破口 但是由于异或是位独立的,我们考虑求出每一位的期望 设\(f[i]\)为从节点\(i\)出发到达N的期望值 有\(f[i] = \frac{f[j]}{degree[i]} + \frac{1 - f[k]}{degree[i]} [edge(i,j) = 0,edge(i,k) = 1]\) 因为如果出边权值为0,异或之后值不变,等于\(f[…
题意 题目链接 Sol 期望的线性性对xor运算是不成立的,但是我们可以每位分开算 设\(f[i]\)表示从\(i\)到\(n\)边权为1的概率,统计答案的时候乘一下权值 转移方程为 \[f[i] = (w = 1) \frac{1 - f[to]}{deg[i]} +(w = 0) \frac{f[to]}{deg[i]} \] 高斯消元解一下 注意:f[n] = 0,有重边! #include<bits/stdc++.h> using namespace std; const int MA…
解题思路: Xor的期望???怕你不是在逗我. 按为期望,新技能get 剩下的就是游走了. 代码: #include<cmath> #include<cstdio> #include<cstring> #include<algorithm> struct pnt{ int hd; int ind; }p[]; struct ent{ int twd; int lst; int vls; }e[]; ][]; int cnt; int n,m; void ad…
http://www.lydsy.com/JudgeOnline/problem.php?id=2337 概率不能异或 但根据期望的线性,可以计算出每一位为1的概率,再累积他们的期望 枚举每一位i,现在要计算从1出发第i位异或和为1的概率 令f[u]表示从点u出发,第i为为1的概率 d[u]表示u的度数 枚举与u相连的v 若边权的第i位为1,那么v的第i位为0,f[u]+=(1-f[v])/d[u] 若边权的第i位为0,那么v的第i位为1,f[u]+=f[v]/d[u] 还有一个f[n]=0 将…
这个题让我认识到我以往对于图上期望概率的认识是不完整的,我之前只知道正着退还硬生生的AC做过的所有图,那么现在让我来说一下逆退,一般来说对于概率性的东西都只是正推,因为有了他爸爸才有了他,而对于期望性的东西可以说是从终点开始每个点都是以这个点为起点到终点的期望,那么就可以是有本节点开花遗传和继承. 本题中说求异或,那么根据异或的一般思路,一位一位的搞,每一位不是一就是二我么可以求从这个点到终点这一位是1的期望也就是概率了 #include<cstdio> #include<cstring…
设 \(f(x)\) 表示从 \(x\) 节点走到 \(n\) 的期望.有 $$f(x)=\sum_{{x,y}}\frac{f(y)\oplus w(x,y)}{{\rm deg}(x)}$$ 由于有后效性,无法 DP 求得.于是可以将其看作未知数,\(n\) 个点构成 \(n\) 个 \(n\) 元一次方程,解方程即可. 但还是不太好求,考虑期望的线性性,按位处理. 重新记 \(f(x)\) 表示当前位的 \(x\) 走到 \(n\) 异或和为 \(1\) 的概率,有 $${\rm deg}…