bzoj 1415: [Noi2005]聪聪和可可
直接上记忆化搜索
#include<queue>
#include<cstdio>
#include<algorithm>
using namespace std;
int read_p,read_ca;
inline int read(){
read_p=;read_ca=getchar();
while(read_ca<''||read_ca>'') read_ca=getchar();
while(read_ca>=''&&read_ca<='') read_p=read_p*+read_ca-,read_ca=getchar();
return read_p;
}
struct na{
int y,ne;
}b[];
queue <int> q;
int a,bb;
int n,m,l[],r[],ru[],num=;
int ne[][],dis[][];
double jy[][];
bool bo[][];
const int INF=1e9;
inline void add(int x,int y){
num++;
if (!l[x]) l[x]=num;else b[r[x]].ne=num;
b[num].y=y;r[x]=num;
}
inline void bfs(int x){
for (int i=;i<=n;i++) dis[x][i]=INF;
dis[x][x]=;ne[x][x]=x;
for (int i=l[x];i;i=b[i].ne) dis[x][b[i].y]=,ne[x][b[i].y]=b[i].y,q.push(b[i].y);
while (!q.empty()){
int k=q.front();q.pop();
for (int i=l[k];i;i=b[i].ne)
if (dis[x][b[i].y]>dis[x][k]+) dis[x][b[i].y]=dis[x][k]+,ne[x][b[i].y]=ne[x][k],q.push(b[i].y);else
if (dis[x][b[i].y]==dis[x][k]+&&ne[x][b[i].y]>ne[x][k]) ne[x][b[i].y]=ne[x][k],q.push(b[i].y);
}
}
inline double dfs(int a,int bb){
if (a==bb) return 0.0;
if (bo[a][bb]) return jy[a][bb];
bo[a][bb]=;
double ans=0.0;
int aa=ne[ne[a][bb]][bb];
if (aa==bb) return jy[a][bb]=1.0;
int u=;
for (int i=l[bb];i;i=b[i].ne) ans+=dfs(aa,b[i].y),u++;
ans+=dfs(aa,bb);
ans=1.0/u*ans+1.0;
return jy[a][bb]=ans;
}
int main(){
int i,j,x,y;
n=read();m=read();
a=read();bb=read();
for (i=;i<=m;i++) x=read(),y=read(),add(x,y),add(y,x);
for (int i=;i<=n;i++) bfs(i);
printf("%.3lf\n",dfs(a,bb));
return ;
}
bzoj 1415: [Noi2005]聪聪和可可的更多相关文章
- 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), ...
- bzoj 1415 [Noi2005]聪聪和可可——其实无环的图上概率
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1415 乍一看和“游走”一样.于是高斯消元.n^2状态,复杂度n^6…… 看看TJ,发现因为聪 ...
- BZOJ 1415 [NOI2005]聪聪与可可 (概率DP+dfs)
题目大意:给你一个无向联通图,节点数n<=1000.聪聪有一个机器人从C点出发向在M点的可可移动,去追赶并吃掉可可,在单位时间内,机器人会先朝离可可最近的节点移动1步,如果移动一步机器人并不能吃 ...
- BZOJ 1415: [Noi2005]聪聪和可可 [DP 概率]
传送门 题意:小兔子乖乖~~~ 题意·真:无向图吗,聪抓可,每个时间聪先走可后走,聪一次可以走两步,朝着里可最近且点编号最小的方向:可一次只一步,等概率走向相邻的点或不走 求聪抓住可的期望时间 和游走 ...
- bzoj 1415: [Noi2005]聪聪和可可 期望dp+记忆化搜索
期望dp水题~ 你发现每一次肯定是贪心走 2 步,(只走一步的话就可能出现环) 然后令 $f[i][j]$ 表示聪在 $i$,可在 $j$,且聪先手两个人碰上面的期望最小次数. 用记忆化搜索转移就行了 ...
- bzoj 1415: [Noi2005]聪聪和可可【期望dp+bfs】
因为边权为1所以a直接bfs瞎搞就行--我一开始竟然写了个spfa #include<iostream> #include<cstdio> #include<queue& ...
- BZOJ 1415: [Noi2005]聪聪和可可(记忆化搜索+期望)
传送门 解题思路 还是比较简答的一道题.首先\(bfs\)把每个点到其他点的最短路求出来,然后再记忆化搜索.记搜的时候猫的走法是确定的,搜一下老鼠走法就行了. 代码 #include<iostr ...
- 【BZOJ】【1415】【NOI2005】聪聪和可可
数学期望+记忆化搜索 论文:<浅析竞赛中一类数学期望问题的解决方法>——汤可因 中的第一题…… Orz 黄学长 我实在是太弱,这么简单都yy不出来…… 宽搜预处理有点spfa的感觉= = ...
- 【BZOJ 1415】 1415: [Noi2005]聪聪和可可 (bfs+记忆化搜索+期望)
1415: [Noi2005]聪聪和可可 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1640 Solved: 962 Description I ...
随机推荐
- Mysql 备份恢复与xtrabackup备份
- hbase rest api接口链接管理【golang语言版】
# go-hbase-resthbase rest api接口链接管理[golang语言版]关于hbase的rest接口的详细信息可以到官网查看[http://hbase.apache.org/boo ...
- 如何在MQ中实现支持任意延迟的消息?
什么是定时消息和延迟消息? 定时消息:Producer 将消息发送到 MQ 服务端,但并不期望这条消息立马投递,而是推迟到在当前时间点之后的某一个时间投递到 Consumer 进行消费,该消息即定时消 ...
- useradd 命令 及 相关文件解读
翻译自 man useradd 名称: 创建新用户或更新默认的新用户信息 快照:useradd -D 描述: 在不加-D参数调用时,useradd命令使用指定的参数和系统的默认值来创建新账户. 取决于 ...
- ASP.NET Core读取AppSettings
http://www.tuicool.com/articles/rQruMzV 今天在把之前一个ASP.NET MVC5的Demo项目重写成ASP.NET Core,发现原先我们一直用的Configu ...
- Python学习_13_继承和元类
继承 继承的含义就是子类继承父类的命名空间,子类中可以调用父类的属性和方法,由于命名空间的查找方式,当子类中定义和父类同名属性或者方法时,子类的实例调用的是子类中的属性,而不是父类,这就形成了pyth ...
- Python学习_02_数字和运算
python具有强大的科学运算功能,python由于支持更加强大的面向对象和动态特性,相比R语言.matlab.mathmatic等传统的科学计算工具具有非常大的优势. Python的数字 pytho ...
- CSS样式表学习
---恢复内容开始--- 今天学习的主要内容是样式表和选择器. 1.样式表的分类 1.内联式样式表 特点:能实现精确控制,但是范围太小.页面显示的优先级高于其他样式表 2.内嵌式样式表 特点:必须在h ...
- [js高手之路]原型式继承与寄生式继承
一.原型式继承本质其实就是个浅拷贝,以一个对象为模板复制出新的对象 function object( o ){ var G = function(){}; G.prototype = o; retur ...
- 12.python进程\协程\异步IO
进程 创建进程 from multiprocessing import Process import time def func(name): time.sleep(2) print('hello', ...