题意:给一张无向图,有一只猫和一只老鼠,猫每秒会向老鼠的方向移动两个单位,若它们的距离为一,那么只会移动一个单位,老鼠会等概率向周围移动一步或不动,求猫抓到老鼠的期望时间。

Solution
luoguAC第800题。

注意到猫的运动之和猫的位置和老鼠的位置有关,我们可以对其进行预处理,注意若有多种方案的情况会向编号小的点移动。

然后发现猫和老鼠的距离一定是会减小的,不如记录状态进行记忆化搜索,这样转移是不会出现环的。

Code

#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#define N 1002
using namespace std;
queue<int>q;
const double eps=1e-10;
int head[N],dis[N][N],tot,tag[N][N],n,m,s,t;
bool vis[N];
double dp[N][N];
struct zzh{int n,to;
}e[N<<1];
inline void add(int u,int v){e[++tot].n=head[u];e[tot].to=v;head[u]=tot;
}
double dfs(int s,int t){if(dp[s][t]>eps)return dp[s][t];if(s==t)return 0;int ss=tag[s][t];if(ss==t)return 1;ss=tag[ss][t];if(ss==t)return 1;double sum=0,ans=0;for(int i=head[t];i;i=e[i].n)ans+=dfs(ss,e[i].to),sum++;ans+=dfs(ss,t);ans=ans/(sum+1)+1;return dp[s][t]=ans;
}
int main(){scanf("%d%d%d%d",&n,&m,&s,&t);int u,v;for(int i=1;i<=m;++i){scanf("%d%d",&u,&v);add(u,v);add(v,u);}    memset(dis,0x3f,sizeof(dis));memset(tag,0x3f,sizeof(tag));for(int i=1;i<=n;++i){dis[i][i]=0;q.push(i);while(!q.empty()){int u=q.front();q.pop();vis[u]=0;for(int j=head[u];j;j=e[j].n){int v=e[j].to;if(dis[i][v]>dis[i][u]+1){dis[i][v]=dis[i][u]+1;if(!vis[v]){vis[v]=1;q.push(v);}}}}}for(int i=1;i<=n;++i)for(int k=1;k<=n;++k)for(int j=head[i];j;j=e[j].n)if(dis[i][k]==dis[i][e[j].to]+dis[e[j].to][k])tag[i][k]=min(e[j].to,tag[i][k]);printf("%.3lf",dfs(s,t));return 0;
}

转载于:https://www.cnblogs.com/ZH-comld/p/9680865.html

[NOI2005]聪聪与可可(期望dp)相关推荐

  1. BZOJ1415 聪聪与可可 - 期望dp

    传送门 题目大意: 一张无向图上有一只猫和一只老鼠,猫先走,鼠后走.猫每次会向与其相邻的并且距离老鼠最近的点移动(若距离相等去编号较小的),如果移动一步后还没吃到老鼠,还可以再移动一步(算在一个时间内 ...

  2. BZOJ1415 [Noi2005]聪聪和可可 【SPFA + 期望dp记忆化搜索】

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

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

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

  4. BZOJ1415[Noi2005]聪聪和可可——记忆化搜索+期望dp

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

  5. 聪聪和可可(记忆化dp+数学期望)

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

  6. 【BZOJ 1415】 1415: [Noi2005]聪聪和可可 (bfs+记忆化搜索+期望)

    1415: [Noi2005]聪聪和可可 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 1640  Solved: 962 Description ...

  7. bzoj1415 noi2005 聪聪和可可 期望

    本来毫无思路,看到网上设了二维数组表示期望后,觉得很妙. 设f[i][j]为聪聪在i,可可在j的聪聪吃到可可的时间期望. dis[i][j]==1 ||==2 时,f[i][j]=1 ,i==j 时, ...

  8. 【BZOJ1415】【NOI2005】聪聪和可可(动态规划,数学期望)

    题面 BZOJ 题解 先预处理出当可可在某个点,聪聪在某个点时 聪聪会往哪里走 然后记忆化搜索一下就好了 #include<iostream> #include<cstdio> ...

  9. bzoj 1415 [Noi2005]聪聪和可可

    1415: [Noi2005]聪聪和可可 Time Limit: 10 Sec  Memory Limit: 162 MB [Submit][Status][Discuss] Description ...

最新文章

  1. 在PC机上运行的linux系统是,Docker Desktop如何在Windows计算机上运行linux容...
  2. java script DOM操作
  3. js高程(二)-----继承
  4. xmpp with openfire之一 xmpp and openfire
  5. java中如何合并两个网格_java – 如何在GXT中合并网格单元格
  6. socket缓冲区以及阻塞模式详解
  7. Mybatis各种模糊查询及#和$区别
  8. 数学模型让咖啡更好喝
  9. 【德】博多·费舍尔 - 小狗钱钱2(2013年7月27日)
  10. 使用scp从远程服务器下载文件到本地
  11. 收藏一个Excel甘特图模板
  12. 修复网络未知依赖服务器,Win7无法上网提示“未知 依赖服务或组无法启动”是什么原因 修改网络配置的三种方法...
  13. leapftp中文版,leapftp中文版的5大主要功能
  14. 《战神》全剧情对话超详尽攻略
  15. 美团2015年校园招聘部分笔试题
  16. 直播如何解决延时问题?谈如何解决延时和连麦的老难题
  17. 何万青:直呼其名——我与中国计算机学会十年命运交织
  18. 转:优秀的人,往往都具备这5种视角
  19. kernel核函数是什么、用来干什么 及其详细推导
  20. CSS实现中英双语导航栏——利用块级元素隐藏实现

热门文章

  1. 使用Maven打包生成的-SNAPSHOT.jar与-RELEASE.jar分别代表什么?SNAPSHOT是什么意思?RELEASE是什么意思?
  2. 2022-2028年中国柴油行业市场研究及前瞻分析报告
  3. grep 的特殊使用
  4. 【牛腩新闻发布系统】系统发布06
  5. 确定修改——取消修改
  6. Linux系统管理必备知识之查看系统用户和用户组
  7. 高斯回归过程应用例子
  8. LeetCode简单题之学生出勤记录 I
  9. 英伟达TRTTorch
  10. TVM vs TensorRT比较