http://vjudge.net/problem/viewProblem.action?id=20613

题意:不用说了,中文题。

这个题可以用概率DP来做。

题中要求猫抓到老鼠的时间期望。分析一下这个过程,如果猫在每单位时间里第一步移动没有抓到老鼠,它还可以继续移动一次。对于确定老鼠的位置,注意猫的每次移动都是固定的,而老鼠的移动位置却是不定的。

令dp[i][j]表示猫在i位置老鼠在j位置时,猫抓到老鼠的期望。next[i][j]表示猫从i位置到j位置时走最短路径需要移动到的第一个结点位置。d[i]表示结点i的度。

这样首先看猫的当前位置,如果i==j即猫和老鼠在同一个点,那么猫不用移动了这时候猫已经抓到了老师,dp[i][j]=0。

如果不等,考虑如果猫在这两次移动中抓到了老鼠,如果猫第一步移动到了老鼠当前所在位置,即next[i][j]==j,或者猫第二步移动抓到了老鼠,即next[next[i][j]][j]==j,此时所用时间都是1,dp[i][j]=1。

其他情况,考虑猫在该单位时间内没抓到老鼠,此时的状态转移取决于老鼠的行动。老鼠可以移动到任意一个和j结点相连的点,也可以停留在j点,每种情况发生的概率是1/(d[j]+1),每次转移到的状态即dp[next[next[i][j]][j]][k](k取值j,或与j点直接连边的点),运用全期望公式即可。

这样记忆化搜索可解。

其中计算next[][]的过程可以用bfs预处理。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
#include <queue>
#include <algorithm>
#define ll long long
#define MAXN 30005
using namespace std;
int n,m;
vector<];
][];
][];
][];
struct Point
{
    int pos,from;
    Point(,):pos(a),from(b) {}
};
void bfs(int sst)
{
    ]= {};
    queue<Point> que;
    que.push(Point(sst));
    while(!que.empty())
    {
        Point q=que.front();
        que.pop();
        ; i<gl[q.pos].size(); ++i)
        {
            if(vis[gl[q.pos][i]]) continue;
            vis[gl[q.pos][i]]=true;
            int f;
            if(q.pos==sst) f=gl[q.pos][i];
            else f=q.from;
            que.push(Point(gl[q.pos][i],f));
            next[sst][gl[q.pos][i]]=f;
        }
    }
}
double dp(int i,int j)
{
    if(vis[i][j]) return f[i][j];
    vis[i][j]=true;
    int &p=next[i][j];
    ;
    ;
    f[i][j]=;
    ; k<gl[j].size(); ++k)
        f[i][j]+=dp(next[p][j],gl[j][k]);
    f[i][j]+=dp(next[p][j],j);
    f[i][j]/=(gl[j].size()+);
    f[i][j]++;
    return f[i][j];

}
int main()
{
    scanf("%d%d",&n,&m);
    int st,ed;
    scanf("%d%d",&st,&ed);
    ; i<m; ++i)
    {
        int x,y;
        scanf("%d%d",&x,&y);
        gl[x].push_back(y);
        gl[y].push_back(x);
    }
    ; i<=n; ++i)
    {
        sort(gl[i].begin(),gl[i].end());
        bfs(i);
    }
    memset(vis,,sizeof(vis));
    printf("%.3lf\n",dp(st,ed));
    ;
}

HYSBZ 1415 - 聪聪和可可(概率DP)的更多相关文章

  1. BZOJ 1415 [NOI2005]聪聪与可可 (概率DP+dfs)

    题目大意:给你一个无向联通图,节点数n<=1000.聪聪有一个机器人从C点出发向在M点的可可移动,去追赶并吃掉可可,在单位时间内,机器人会先朝离可可最近的节点移动1步,如果移动一步机器人并不能吃 ...

  2. 聪聪和可可 HYSBZ - 1415(概率 + spfa + 记忆化dp)

    Input 数据的第1行为两个整数N和E,以空格分隔,分别表示森林中的景点数和连接相邻景点的路的条数. 第2行包含两个整数C和M,以空格分隔,分别表示初始时聪聪和可可所在的景点的编号. 接下来E行,每 ...

  3. BZOJ 1415: [Noi2005]聪聪和可可( 最短路 + 期望dp )

    用最短路暴力搞出s(i, j)表示聪聪在i, 可可在j处时聪聪会走的路线. 然后就可以dp了, dp(i, j) = [ dp(s(s(i,j), j), j) + Σdp(s(s(i,j), j), ...

  4. bzoj1415 [Noi2005]聪聪和可可【概率dp 数学期望】

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1415 noip2016 D1T3,多么痛的领悟...看来要恶补一下与期望相关的东西了. 这是 ...

  5. 1415. [NOI2005]聪聪和可可【记忆化搜索DP】

    Description Input 数据的第1行为两个整数N和E,以空格分隔,分别表示森林中的景点数和连接相邻景点的路的条数. 第2行包含两个整数C和M,以空格分隔,分别表示初始时聪聪和可可所在的景点 ...

  6. bzoj 1415 [Noi2005]聪聪和可可——其实无环的图上概率

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1415 乍一看和“游走”一样.于是高斯消元.n^2状态,复杂度n^6…… 看看TJ,发现因为聪 ...

  7. BZOJ_1415_[Noi2005]聪聪和可可_概率DP+bfs

    BZOJ_1415_[Noi2005]聪聪和可可_概率DP+bfs Description Input 数据的第1行为两个整数N和E,以空格分隔,分别表示森林中的景点数和连接相邻景点的路的条数. 第2 ...

  8. 概率/期望DP初步——BZOJ1415 聪聪和可可

    期望相关: 数学期望,可以简单理解的加权平均数.设有一系列的值$x_i$,每个值被取到的概率为$p_i$,则期望$E=\sum\limits_{i=1}^n p_i x_i$. 期望具有线性性:$$E ...

  9. 【BZOJ】1415 [Noi2005]聪聪和可可 期望DP+记忆化搜索

    [题意]给定无向图,聪聪和可可各自位于一点,可可每单位时间随机向周围走一步或停留,聪聪每单位时间追两步(先走),问追到可可的期望时间.n<=1000. [算法]期望DP+记忆化搜索 [题解]首先 ...

随机推荐

  1. 1.2G内存试玩RAMOS_XP

    1.2G内存试玩RAMOS_XP1.为了防止做系统时出现意外,用Bootice把C盘MBR修改为Grub4dos,这样子系统如果失败,可以进入PE重做. 2.进入PE格式化C盘,格式化的时候勾选启用N ...

  2. wps的几个优点

    wps的几个优点 1.wps非常小巧,wps2011源文件38M,安装后160M,wps2010安装过后158M,工具栏.程序设置.模板可保存在一个文件里面,重装后用\WPS Office Perso ...

  3. JavaScript ——闭包理解

    昨天晚上听别人谈起闭包这个东西,虽然对js有一点了解但却丝毫没有印象,今天也没什么事就顺便研究了一下满足好奇宝宝.整合于网上的理解,记录一下. 一.闭包的作用域 要理解闭包,首先必须理解Javascr ...

  4. jmeter 实时搜索结果

    因为JMeter 2.13你可以得到实时搜索结果发送到后端通过 后端侦听器 使用潜在的任何后端(JDBC.JMS网络服务,€Š) 通过提供一个实现类 AbstractBackendListenerCl ...

  5. zoj 1204 Additive equations

    ACCEPT acm作业 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=204 因为老师是在集合那里要我们做这道题.所以我很是天 ...

  6. (09)odoo工作流

    --------------修订时间14:54 2016-09-18 星期日21:59 2016-06-12 星期日10:06 2016-02-24 星期三17:14 2016-01-29 星期五-- ...

  7. MyBatis核心配置文件模版

      <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLI ...

  8. 如何设置一个严格30分钟过期的Session

    今天在我的微博(Laruence)上发出一个问题: 我在面试的时候, 经常会问一个问题: “如何设置一个30分钟过期的Session?”, 大家不要觉得看似简单, 这里面包含的知识挺多, 特别适合考察 ...

  9. 130. Surrounded Regions -- 被某字符包围的区域

    Given a 2D board containing 'X' and 'O', capture all regions surrounded by 'X'. A region is captured ...

  10. 有一种感动叫ACM(记WJMZBMR在成都赛区开幕式上的讲话)

    各位选手,各位教练,大家好,我是来自清华大学交叉信息学院的陈立杰,今天很荣幸站在这里代表全体参赛选手发言.对于我来说,这是我第一次正式参加ACM的比赛.不过我跟ACM之间的缘分,大概在很早的时候就已经 ...