[NOI2005]聪聪与可可(期望dp)
题意:给一张无向图,有一只猫和一只老鼠,猫每秒会向老鼠的方向移动两个单位,若它们的距离为一,那么只会移动一个单位,老鼠会等概率向周围移动一步或不动,求猫抓到老鼠的期望时间。
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)相关推荐
- BZOJ1415 聪聪与可可 - 期望dp
传送门 题目大意: 一张无向图上有一只猫和一只老鼠,猫先走,鼠后走.猫每次会向与其相邻的并且距离老鼠最近的点移动(若距离相等去编号较小的),如果移动一步后还没吃到老鼠,还可以再移动一步(算在一个时间内 ...
- BZOJ1415 [Noi2005]聪聪和可可 【SPFA + 期望dp记忆化搜索】
题目 输入格式 数据的第1行为两个整数N和E,以空格分隔,分别表示森林中的景点数和连接相邻景点的路的条数. 第2行包含两个整数C和M,以空格分隔,分别表示初始时聪聪和可可所在的景点的编号. 接下来E行 ...
- bzoj1415 [Noi2005]聪聪和可可【概率dp 数学期望】
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1415 noip2016 D1T3,多么痛的领悟...看来要恶补一下与期望相关的东西了. 这是 ...
- BZOJ1415[Noi2005]聪聪和可可——记忆化搜索+期望dp
题目描述 输入 数据的第1行为两个整数N和E,以空格分隔,分别表示森林中的景点数和连接相邻景点的路的条数. 第2行包含两个整数C和M,以空格分隔,分别表示初始时聪聪和可可所在的景点的编号. 接下来E行 ...
- 聪聪和可可(记忆化dp+数学期望)
emmmm 输入格式 数据的第1行为两个整数N和E,以空格分隔,分别表示森林中的景点数和连接相邻景点的路的条数. 第2行包含两个整数C和M,以空格分隔,分别表示初始时聪聪和可可所在的景点的编号. 接下 ...
- 【BZOJ 1415】 1415: [Noi2005]聪聪和可可 (bfs+记忆化搜索+期望)
1415: [Noi2005]聪聪和可可 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 1640 Solved: 962 Description ...
- bzoj1415 noi2005 聪聪和可可 期望
本来毫无思路,看到网上设了二维数组表示期望后,觉得很妙. 设f[i][j]为聪聪在i,可可在j的聪聪吃到可可的时间期望. dis[i][j]==1 ||==2 时,f[i][j]=1 ,i==j 时, ...
- 【BZOJ1415】【NOI2005】聪聪和可可(动态规划,数学期望)
题面 BZOJ 题解 先预处理出当可可在某个点,聪聪在某个点时 聪聪会往哪里走 然后记忆化搜索一下就好了 #include<iostream> #include<cstdio> ...
- bzoj 1415 [Noi2005]聪聪和可可
1415: [Noi2005]聪聪和可可 Time Limit: 10 Sec Memory Limit: 162 MB [Submit][Status][Discuss] Description ...
最新文章
- 在PC机上运行的linux系统是,Docker Desktop如何在Windows计算机上运行linux容...
- java script DOM操作
- js高程(二)-----继承
- xmpp with openfire之一 xmpp and openfire
- java中如何合并两个网格_java – 如何在GXT中合并网格单元格
- socket缓冲区以及阻塞模式详解
- Mybatis各种模糊查询及#和$区别
- 数学模型让咖啡更好喝
- 【德】博多·费舍尔 - 小狗钱钱2(2013年7月27日)
- 使用scp从远程服务器下载文件到本地
- 收藏一个Excel甘特图模板
- 修复网络未知依赖服务器,Win7无法上网提示“未知 依赖服务或组无法启动”是什么原因 修改网络配置的三种方法...
- leapftp中文版,leapftp中文版的5大主要功能
- 《战神》全剧情对话超详尽攻略
- 美团2015年校园招聘部分笔试题
- 直播如何解决延时问题?谈如何解决延时和连麦的老难题
- 何万青:直呼其名——我与中国计算机学会十年命运交织
- 转:优秀的人,往往都具备这5种视角
- kernel核函数是什么、用来干什么 及其详细推导
- CSS实现中英双语导航栏——利用块级元素隐藏实现