[BZOJ2337][HNOI2011]XOR和路径-高斯消元-期望
2018-01-01 00:14
435 查看
XOR和路径
Description
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/02/37a5a5ee7febcbeb54787efd70ec919a.jpg)
在错误的思路上纠结好久为什么是错的……
果然还是个baka.jpg
思路:
考虑按位考虑,令f[i]表示在仅考虑当前位的情况下,i到n的路径当前位为1
13e9d
的概率。
那么可以高斯消元:
f[i]=∑(i,j)∈E,w=1(1−f[j])+∑(i,j)∈E,w=0f[j]
边界条件为f[n]=0,因为n作为终止态,路径一定为0。
然后直接高斯消元,每一位为1的概率即为解出的f[1]。
直接乘起来,做完了~
#include<bits/stdc++.h> using namespace std; inline int read() { int x=0;char ch=getchar(); while(ch<'0' || '9'<ch)ch=getchar(); while('0'<=ch && ch<='9')x=x*10+(ch^48),ch=getchar(); return x; } typedef double db; typedef pair<int,int> pr; const int N=109; const int K=31; const db eps=1e-9; int n,m; vector<pr> g ; db a ; inline db gauss() { for(int i=1;i<=n;i++) { int p=i; for(int j=i+1;j<=n;j++) if(fabs(a[j][i])>fabs(a[p][i])) p=j; if(p!=i)swap(a[i],a[p]); for(int j=i+1;j<=n;j++) if(fabs(a[j][i])>eps) { db mul=a[j][i]/a[i][i]; for(int k=i;k<=n+1;k++) a[j][k]-=a[i][k]*mul; } } for(int i=n;i>=1;i--) { a[i][n+1]/=a[i][i];a[i][i]=1; for(int j=1;j<i;j++) a[j][n+1]-=a[j][i]*a[i][n+1]; } return a[1][n+1]; } int main() { n=read();m=read(); for(int i=1,u,v,w;i<=m;i++) { u=read();v=read();w=read(); g[u].push_back(pr(v,w)); if(u!=v)g[v].push_back(pr(u,w)); } db ans=0; for(int i=K-1;i>=0;i--) { for(int j=1;j<=n;j++) for(int k=1;k<=n+1;k++) a[j][k]=0; for(int u=1;u<=n;u++) { db per=1/(db)g[u].size(); a[u][u]=1;a[u][n+1]=0; if(u==n)continue; for(int k=0,e=g[u].size();k<e;k++) { if(((g[u][k].second>>i)&1)) { a[u][g[u][k].first]+=per; a[u][n+1]+=per; } else a[u][g[u][k].first]-=per; } } ans+=(db)(1<<i)*gauss(); } printf("%.3f\n",ans); return 0; }
相关文章推荐
- 【bzoj2337】[HNOI2011]XOR和路径 期望dp+高斯消元
- [BZOJ2337][HNOI2011]XOR和路径(期望概率dp+高斯消元)
- [BZOJ2337] [HNOI2011] XOR和路径 期望 + 按位处理 + 高斯消元
- [BZOJ2337][HNOI2011]XOR和路径(高斯消元解期望方程)
- BZOJ 2337 HNOI2011 XOR和路径 期望DP+高斯消元
- 【BZOJ】2337: [HNOI2011]XOR和路径 期望+高斯消元
- 【BZOJ2337】[HNOI2011]XOR和路径 期望DP+高斯消元
- bzoj 2337: [HNOI2011]XOR和路径 (概率与期望DP+高斯消元)
- [BZOJ]2337: [HNOI2011]XOR和路径 期望+高斯消元
- [BZOJ2337][HNOI2011]XOR和路径(概率期望dp+高斯消元)
- bzoj 2337: [HNOI2011]XOR和路径 期望dp+高斯消元
- BZOJ 2337|HNOI 2011|XOR和路径|概率期望|高斯消元
- bzoj 2337 [HNOI2011]XOR和路径【高斯消元+dp】
- [BZOJ2337][HNOI2011]XOR和路径(概率+高斯消元)
- 【BZOJ 2337】[HNOI2011]XOR和路径 高斯消元+按位异或
- 【概率DP/高斯消元】BZOJ 2337:[HNOI2011]XOR和路径
- 【bzoj2337】【HNOI2011】【XOR和路径】【高斯消元】
- BZOJ 2337: [HNOI2011]XOR和路径 [高斯消元 概率DP]
- BZOJ 2337: [HNOI2011]XOR和路径( 高斯消元 )
- BZOJ 2337: [HNOI2011]XOR和路径|期望|高斯消元