BZOJ 1415 聪聪和可可
f[i][j]表示i点追j点的期望步数。。。
这题必须spfa不能bfs。
且复杂度不会炸(仅1000条边)
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#include<algorithm>
#define maxv 1050
#define maxe 2050
#define inf 1000000007
#define eps 1e-6
using namespace std;
int n,m,b,t,x,y,g[maxv],nume=;
int d[maxv],p[maxv][maxv],dis[maxv];
double f[maxv][maxv];
bool vis[maxv];
queue <int> q;
struct edge
{
int v,nxt;
}e[maxe];
void addedge(int u,int v)
{
e[++nume].v=v;
e[nume].nxt=g[u];
g[u]=nume;
}
void reset()
{
for (int i=;i<=n;i++)
for (int j=;j<=n;j++)
p[i][j]=inf;
}
void pre_bfs(int x)
{
while (!q.empty()) q.pop();
for (int i=;i<=n;i++)
{
vis[i]=false;
dis[i]=inf;
}
dis[x]=;
for (int i=g[x];i;i=e[i].nxt)
{
int v=e[i].v;
vis[v]=true;dis[v]=;q.push(v);
p[x][v]=v;
}
while (!q.empty())
{
int head=q.front();q.pop();
for (int i=g[head];i;i=e[i].nxt)
{
int v=e[i].v;
if ((dis[v]>dis[head]+) || ((dis[v]==dis[head]+) && (p[x][v]>p[x][head])))
{
dis[v]=dis[head]+;
p[x][v]=p[x][head];
if (!vis[v]) q.push(v);
}
}
vis[head]=false;
}
return;
}
double dp(int x,int y)
{
if (x==y) return ;
if (f[x][y]>eps) return f[x][y];
if ((p[x][y]==y) || (p[p[x][y]][y]==y)) return ;
double ret=;
for (int i=g[y];i;i=e[i].nxt)
{
int v=e[i].v;
if (p[p[x][y]][y]==y) ret++;
else if (p[x][y]==y) ret++;
else ret+=dp(p[p[x][y]][y],v);
}
if (p[p[x][y]][y]==y) ret++;
else if (p[x][y]==y) ret++;
else ret+=dp(p[p[x][y]][y],y);
ret/=(d[y]+);ret=ret+;
f[x][y]=ret;
return ret;
}
int main()
{
memset(d,,sizeof(d));
scanf("%d%d",&n,&m);scanf("%d%d",&b,&t);
for (int i=;i<=m;i++)
{
scanf("%d%d",&x,&y);
addedge(x,y);addedge(y,x);
d[x]++;d[y]++;
}
reset();
for (int i=;i<=n;i++)
pre_bfs(i);
for (int i=;i<=n;i++) p[i][i]=inf;
printf("%.3lf\n",dp(b,t));
return ;
}
BZOJ 1415 聪聪和可可的更多相关文章
- 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]聪聪和可可
直接上记忆化搜索 #include<queue> #include<cstdio> #include<algorithm> using namespace std; ...
- 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 ...
随机推荐
- swift-网络请求
跟着网上大神写了个,还有待提高啊:http://pan.baidu.com/s/1sjC5Pl7
- solr的collection,shard,replica,core概念
一.collection 1.由多个cores组成一个逻辑索引叫做一个collection.一个collection本质上是一个可以跨越多个核的索引,同时包含冗余索引. 2.collection由不同 ...
- DevExpress GridView 自定义搜索按钮改为中文内容
首先将 GridControl 控件的搜索功能显示出来. http://www.cnblogs.com/DeepLearing/p/3887601.html 显示效果如下: 可以通过 GridLoca ...
- .bat后台运行
可以编辑一个vbs脚本,在其中以隐藏窗口运行批处理程序. ------------------------------------------------------------ Set ws = C ...
- hdu 3404 Switch lights 博弈论
主要是求NIM积!!! 代码如下: #include<iostream> #include<cstdio> #include<stack> #include< ...
- 理解Node.js事件驱动编程
Node.js现在非常活跃,相关生态社区已经超过Lua(基本上比较知名的功能都有nodejs模块实现). 但是我们为何要使用Node.Js?相比传统的webserver服务模式,nodejs有什么优点 ...
- js&html5实现消星星游戏
前段时间看见园子里有同学用js+jquery实现了消星星游戏,自己也早有这个想法,于是就利用业余时间用js+html5实现了一下消星星游戏. 主要是想实现效果,运用了css3中的动画属性.游戏积分算法 ...
- interviewbit :Min Steps in Infinite GridBookmark Suggest Edit
You are in an infinite 2D grid where you can move in any of the 8 directions : (x,y) to (x+1, y), (x ...
- Android核心分析之十九电话系统之GSMCallTacker
GSMCallTracker在本质上是一个Handler.<IGNORE_JS_OP> 1.jpg (1.52 KB, 下载次数: 1) 下载附件 保存到相册 2012-3-22 11: ...
- 给View换字体
注意,给View换字体是直接换.在Delegate里换的只是某一列的字体 class delegate : public QStyledItemDelegate { public: ) : QStyl ...