zoukankan      html  css  js  c++  java
  • 【BZOJ3143】【HNOI2013】游走 高斯消元

    题目传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3143

    我们令$P_i$表示从第i号点出发的期望次数。则$P_n$显然为$0$。

    对于$P_2~P_{n-1}$,则有$P_i= sum frac{P_j}  {d_j}$,其中节点j与节点i有边相连,$d_j$表示节点j的度数。

    对于$P_1$,则有$P_i=1+ sum frac{P_j}  {d_j}$。

    不难发现其实就是一个$n$元一次方程组,我们可以通过高斯消元求出每一个$P_i$。

    对于一条边$(x,y)$,经过这条边的期望次数为$ frac {P_x} {d_x} + frac {P_y} {d_y}$,我们设此值为$p_i$ 。

    我们把期望经过次数从大到小排序,则答案为$sum_{i=1}^{n} p_i imes i$。

    然后就做完了。

    AC代码如下:

     1 #include<bits/stdc++.h>
     2 #define M 505
     3 using namespace std;
     4 int a[M][M]={0},n,m;
     5 double f[M][M]={0},p[M]={0},du[M]={0};
     6 
     7 void solve(){
     8     for(int i=1;i<=n;i++){
     9         for(int j=i+1;j<=n;j++){
    10             double x=f[j][i]/f[i][i];
    11             for(int k=i;k<=n+1;k++) 
    12             f[j][k]-=x*f[i][k];
    13         }
    14     }
    15     for(int i=n;i;i--){
    16         for(int j=i+1;j<=n;j++) 
    17         f[i][n+1]-=f[i][j]*p[j];
    18         p[i]=f[i][n+1]/f[i][i];
    19     }
    20 }
    21 int X[M*M]={0},Y[M*M]={0}; double hh[M*M]={0};
    22 int main(){
    23     scanf("%d%d",&n,&m);
    24     for(int i=1;i<=m;i++){
    25         int x,y; scanf("%d%d",&x,&y);
    26         a[x][y]=a[y][x]=1;
    27         du[x]++; du[y]++;
    28         X[i]=x; Y[i]=y;
    29     }
    30     f[1][n+1]=-1; f[n][n]=1;
    31     for(int i=1;i<n;i++){
    32         f[i][i]=-1;
    33         for(int j=1;j<=n;j++) if(a[i][j])
    34             f[i][j]=1/du[j]; 
    35     }
    36     solve();
    37     for(int i=1;i<=m;i++)
    38     hh[i]=p[X[i]]/du[X[i]]+p[Y[i]]/du[Y[i]];
    39     sort(hh+1,hh+m+1);
    40     double ans=0;
    41     for(int i=1;i<=m;i++)
    42     ans+=hh[i]*(m-i+1);
    43     printf("%.3lf
    ",ans);
    44 }
  • 相关阅读:
    动态规划之解决01背包问题 【转载】
    暴力搜索解0-1背包问题 【转载】
    回溯法之地图着色
    贪心算法之最小生成树
    贪心算法之最短路径
    HMM隐马尔科夫模型
    变分贝叶斯
    Leetcode好的微博
    HMM隐马尔科夫模型浅析
    向量的协方差矩阵浅析
  • 原文地址:https://www.cnblogs.com/xiefengze1/p/8503914.html
Copyright © 2011-2022 走看看