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

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

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

2019-11-11 03:54:07
字體:
來源:轉載
供稿:網友

題目描述

傳送門

題解

假設當前在點(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)
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 石门县| 竹溪县| 钟祥市| 湟源县| 巴青县| 眉山市| 虞城县| 泸溪县| 普宁市| 西藏| 陆良县| 呼图壁县| 丹巴县| 北票市| 邵阳县| 云霄县| 唐河县| 抚顺市| 六盘水市| 福州市| 隆安县| 濉溪县| 齐河县| 乌兰察布市| 崇信县| 柳林县| 洱源县| 黄陵县| 莱州市| 拉孜县| 邵阳县| 微山县| 江西省| 南木林县| 贡嘎县| 安图县| 凤翔县| 东丰县| 凤山县| 成安县| 孟津县|