思路 看到异或,容易联想到二进制位之间是相互独立的,所以可以把问题变成每个二进制位为1的概率再乘上(1<<pos)的值 假设现在考虑到pos位,设f[i]为第i个节点期望的异或和第pos位是1的概率,有这样的转移方程 \[ f[u]=\frac{1}{d[u]}\sum_{v}[w[i]_{pos}=1]?(1-f[v]):f[v] \] 这是一个逆推的方程,所以f[n]=0,f[1]就是答案 然后这个方程互相依赖,所以上高斯消元求解即可 代码 注意有点卡精度,换成long double可AC…