描述
分析
- 转化为二进制按位来计算, 最后把每一位的加起来
- f[i]表示i到n的期望路径长度, d[i]表示i的度
- 因为i的期望是由i走到的点状态转移得到的, 所以在计算概率时应该用i的度来算
- 如果i到j的边的权值的第 BIT 位是0, 任何数异或0都是它本身, 所以f[i] = f[j] / d[i] + …
- 如果i到j的边的权值的第 BIT 位是1, 异或一相当于取反. 所以f[i] = (1-f[j]) / d[i] + …
- 然后列出f[i]的方程, 移项使所有的f值在左边, 右边剩一堆常数, 就可以高斯消元了.
- 有n个方程, n个变量. 解出X,
ans = sum{X[0] * (1 << BIT) | 0 <= BIT < 30 即可}
代码
https://code.csdn.net/snippets/619507
时间: 2024-11-05 12:17:02