题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3640

题意:给出一个无向图,从1走到n。开始是血量H,从u到达v时血量减少a[v]。每次走每条路径的概率相等。求走到n且血量大于0的概率。

思路:设f[h][u]表示到达u血量为h的概率。由于有的点到达时不掉血,这个不好弄。列出方程组,求出每个不掉血的点由哪些点到达以及他们的系数。比如x,y,z可到达r,r点不掉血,那么f[h][r]=p1*f[h][x]+p2*f[h][y]+p3*f[h][z]。这个p1、p2、p3就是r的系数。求逆矩阵可以得到。

const int N=155;

int n,m,K,B[N],A[N];
double x[N][N],num[N][N],f[11111][N];
int a[N][N];

void Gauss()
{
    int i,j,k;
    for(i=1;i<=n;i++)
    {
        for(j=i;j<=n;j++) if(fabs(x[j][i])>1e-10) break;
        if(j!=i)
        {
            for(k=1;k<=n;k++)
            {
                swap(x[i][k],x[j][k]);
                swap(num[i][k],num[j][k]);
            }
        }
        double tmp=x[i][i];
        for(k=1;k<=n;k++) x[i][k]/=tmp,num[i][k]/=tmp;
        for(j=1;j<=n;j++) if(j!=i)
        {
            tmp=x[j][i];
            for(k=1;k<=n;k++) x[j][k]-=x[i][k]*tmp,num[j][k]-=num[i][k]*tmp;
        }
    }
}
int main()
{

    scanf("%d%d%d",&n,&m,&K);
    int i,j,k;
    for(i=1;i<=n;i++) scanf("%d",&A[i]);
    for(i=1;i<=m;i++)
    {
        int x,y;
        scanf("%d%d",&x,&y);
        B[x]++;
        a[x][y]++;
        if(x!=y)
        {
            B[y]++;
            a[y][x]++;
        }
    }
    for(i=1;i<n;i++) for(j=1;j<=n;j++) if(!A[j]) x[j][i]-=1.0*a[i][j]/B[i];
    for(i=1;i<=n;i++) x[i][i]+=1,num[i][i]=1;
    Gauss();
    f[K][1]=1;
    double ans=0;
    for(k=K;k>=1;k--)
    {
        for(i=1;i<n;i++) for(j=1;j<=n;j++) if(A[j]&&k+A[j]<=K&&B[i])
        {
            f[k][j]+=f[k+A[j]][i]*a[i][j]/(B[i]);
        }
        double cs[N];
        for(i=1;i<=n;i++) cs[i]=f[k][i];
        for(i=1;i<=n;i++) if(!A[i])
        {
            f[k][i]=0;
            for(j=1;j<=n;j++) if(A[j]||j==1)f[k][i]+=num[i][j]*cs[j];
        }
        ans+=f[k][n];
    }
    printf("%.8lf\n",ans);
    return 0;
}

BZOJ 3640 JC的小苹果(逆矩阵)的更多相关文章

  1. BZOJ 3640: JC的小苹果 [概率DP 高斯消元 矩阵求逆]

    3640: JC的小苹果 题意:求1到n点权和\(\le k\)的概率 sengxian orz的题解好详细啊 容易想到\(f[i][j]\)表示走到i点权为j的概率 按点权分层,可以DP 但是对于\ ...

  2. BZOJ 3640: JC的小苹果

    3640: JC的小苹果 Time Limit: 15 Sec  Memory Limit: 256 MBSubmit: 425  Solved: 155[Submit][Status][Discus ...

  3. ●BZOJ 3640 JC的小苹果

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=3640题解: 期望dp,高斯消元 设dp[i][h]在i位置且血量为h这个状态的期望经过次数. ...

  4. 3640: JC的小苹果 - BZOJ

    让我们继续JC和DZY的故事.“你是我的小丫小苹果,怎么爱你都不嫌多!”“点亮我生命的火,火火火火火!”话说JC历经艰辛来到了城市B,但是由于他的疏忽DZY偷走了他的小苹果!没有小苹果怎么听歌!他发现 ...

  5. 【BZOJ】3640: JC的小苹果

    题解 我们考虑列出期望方程组,\(dp[i][j]\)表示在第\(i\)个点血量为\(j\)的时候到达\(N\)点的概率,所有的\(dp[N][j]\)都是1,所有\(j < 0\)都是0 答案 ...

  6. JC的小苹果 逆矩阵

    这题主要有两种做法:1种是用逆矩阵,转移时无须高斯消元.2是将常数项回代.这里主要介绍第一种. 首先题里少个条件:点权非负.设f [ i ][ j ]表示hp为i时,到达j点的期望次数. 那么若点权为 ...

  7. 【BZOJ 3640】JC的小苹果 (高斯消元,概率DP)

    JC的小苹果 Submit: 432  Solved: 159 Description 让我们继续JC和DZY的故事. “你是我的小丫小苹果,怎么爱你都不嫌多!” “点亮我生命的火,火火火火火!” 话 ...

  8. 【BZOJ3640】JC的小苹果 概率DP+高斯消元

    [BZOJ3640]JC的小苹果 Description 让我们继续JC和DZY的故事. “你是我的小丫小苹果,怎么爱你都不嫌多!” “点亮我生命的火,火火火火火!” 话说JC历经艰辛来到了城市B,但 ...

  9. bzoj千题计划291:bzoj3640: JC的小苹果

    http://www.lydsy.com/JudgeOnline/problem.php?id=3640 dp[i][j] 表示i滴血到达j的概率 dp[i][j] = Σ dp[i+val[i]][ ...

随机推荐

  1. linux系统-代码行数计算

    find macc-cometd -type f -name "*.java" -print0 | xargs -0 wc -l

  2. c++命名规则

    命名规则根据不同公司有略微不同,这里按照google c++的编程标准1.文件名-全部用小写字母和下划线或横线组成,例如my_useful_class.ccmy-useful-class.ccmyus ...

  3. po line received is canceled(恢复PO被取消的余量)

    1張PO已部分收貨,後來由于某種原因,將部分收貨的PO明行取消,現在要對已收料的這一部分進行退貨處理,要怎麼做才好呢? [@more@]DATA COLLECTED===============COL ...

  4. 开源软件free download manager在windows defender中报毒

    从官网上下载的fdm lite 3.9.6,从图片中可以看出安装包有数字签名,windows defender报毒,在线杀毒也检出木马,官网的程序更新到了3.9.6版本,在sourceforge上的源 ...

  5. java总结第二次(剩余内容)//类和对象1

    7.成员变量和局部变量 成员变量:在类中定义,用来描述对象将要有什么 局部变量:在类的方法中定义,在方法中保存临时数据 区别:作用域不同 局部变量的作用域仅限于定义它的方法 成员变量的作用域在整个类内 ...

  6. Jquery中$(document).ready()与传统JavaScript中的window.onload方法的区别(2016/8/3)

    Jquery中$(document).ready()的作用类似于传统JavaScript中的window.onload方法,不过与window.onload方法还是有区别的. 1.执行时间       ...

  7. linux设备驱动归纳总结(三):3.设备驱动面向对象思想和lseek的实现【转】

    本文转自自:http://blog.chinaunix.net/uid-25014876-id-59418.html linux设备驱动归纳总结(三):3.设备驱动面向对象思想和lseek的实现 一. ...

  8. C语言中关键字volatile的含义【转】

    本文转载自:http://m.jb51.net/article/37489.htm 本篇文章是对C语言中关键字volatile的含义进行了详细的分析介绍,需要的朋友参考下 volatile 的意思是“ ...

  9. PHP建站通过服务器架构及实战的方法

    PHP的环境搭建 PHP的帮助使用和配置文件 PHP的Hello World PHP的库函数调用 PHP的Web程序 PHP的函数和面向对象使用 PHP的数据库访问 Nginx安装和配置访问 Word ...

  10. 浏览器的不兼容,归纳几点html编码要素

    1.文字本身的大小不兼容.同样是font-size:14px的宋体文字,在不同浏览器下占的空间是不一样的,ie下实际占高16px,下留白3px,ff下实际占高17px,上留白1px,下留白3px,op ...