国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

[BZOJ3270]博物館(概率+高斯消元)

2019-11-11 04:23:38
字體:
來源:轉載
供稿:網友

題目描述

傳送門

題解

假設當前在點(i,j),下一步從這個點走到它某一個相鄰的點的概率即為1?pidi,記為goi 設兩個人分別走到i,j的概率為f(i,j),那么 f(i,j)=f(i,j)pipj+∑(i,x),(j,y)∈Ef(x,j)pjgox+f(i,y)pigoy+f(x,y)goxgoy 特殊地,f(a,b)的初值為1 這樣得出了n*n個方程,高斯消元即可 需要注意的是,方程中等式右邊在同一個f里的兩個點不能相等,因為一旦相等就已經結束,不會再有走到這個點的概率

代碼

#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;#define N 405const double eps=1e-9;int dcmp(double x){ if (x<=eps&&x>=-eps) return 0; return (x>0)?1:-1;}int n,m,A,B,x,y;int tot,point[N],nxt[N*2],v[N*2];double p[N],d[N],go[N],a[N][N],b[N],ans[N];void add(int x,int y){ ++tot; nxt[tot]=point[x]; point[x]=tot; v[tot]=y;}int id(int x,int y){ return (x-1)*n+y;}void gauss(){ for (int i=1;i<=n*n;++i) { int num=i; for (int j=i+1;j<=n*n;++j) if (dcmp(a[j][i]-a[num][i])>0) num=j; if (num!=i) { for (int j=1;j<=n*n;++j) swap(a[num][j],a[i][j]); swap(b[num],b[i]); } for (int j=i+1;j<=n*n;++j) if (dcmp(a[j][i])) { double t=a[j][i]/a[i][i]; for (int k=1;k<=n*n;++k) a[j][k]-=t*a[i][k]; b[j]-=b[i]*t; } } for (int i=n*n;i>=1;--i) { for (int j=i+1;j<=n*n;++j) b[i]-=a[i][j]*ans[j]; ans[i]=b[i]/a[i][i]; }}int main(){ scanf("%d%d%d%d",&n,&m,&A,&B); for (int i=1;i<=m;++i) { scanf("%d%d",&x,&y); d[x]+=1.0;d[y]+=1.0; add(x,y);add(y,x); } for (int i=1;i<=n;++i) { scanf("%lf",&p[i]); go[i]=(1-p[i])*1/d[i]; } for (int i=1;i<=n;++i) for (int j=1;j<=n;++j) { a[id(i,j)][id(i,j)]=1; if (i!=j) a[id(i,j)][id(i,j)]-=p[i]*p[j]; for (int k=point[i];k;k=nxt[k]) if (v[k]!=i&&v[k]!=j) a[id(i,j)][id(v[k],j)]=-p[j]*go[v[k]]; for (int k=point[j];k;k=nxt[k]) if (v[k]!=i&&v[k]!=j) a[id(i,j)][id(i,v[k])]=-p[i]*go[v[k]]; for (int k=point[i];k;k=nxt[k]) for (int l=point[j];l;l=nxt[l]) if (v[k]!=v[l]) a[id(i,j)][id(v[k],v[l])]=-go[v[k]]*go[v[l]]; } b[id(A,B)]=1.0; gauss(); for (int i=1;i<=n;++i)
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 江城| 昭觉县| 寿宁县| 泽库县| 大余县| 丰城市| 宁明县| 宜章县| 黔东| 东丰县| 开阳县| 梓潼县| 皮山县| 兴业县| 兴国县| 望奎县| 平度市| 井研县| 苏州市| 巫溪县| 临城县| 泗洪县| 邛崃市| 来宾市| 蒙自县| 保定市| 南开区| 兰坪| 克拉玛依市| 资兴市| 长丰县| 巴里| 三原县| 库伦旗| 阿坝| 延津县| 阳春市| 大港区| 会宁县| 盘锦市| 洪泽县|