题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1415

看博客:http://www.cnblogs.com/Narh/p/9206642.html

看博客:https://blog.csdn.net/clove_unique/article/details/62237321

代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
int const maxn=;
int n,m,cc,kk,head[maxn],ct,dis[maxn][maxn],goal[maxn][maxn],inf;
double d[maxn],f[maxn][maxn],ans;
queue<int>q;
struct N{
int to,next;
N(int t=,int n=):to(t),next(n) {}
}edge[maxn<<];
void add(int x,int y){edge[++ct]=N(y,head[x]); head[x]=ct;}
void bfs(int s)
{
while(q.size())q.pop();
dis[s][s]=; q.push(s);
while(q.size())
{
int x=q.front(); q.pop();
for(int i=head[x];i;i=edge[i].next)
{
int u=edge[i].to;
if(dis[s][u]==inf)
{
dis[s][u]=dis[s][x]+;
q.push(u);
}
}
}
}
double dfs(int c,int k)
{
if(f[c][k]>=)return f[c][k];
if(c==k)return f[c][k]=;
if(dis[c][k]<=)return f[c][k]=;
double P=1.0/(d[k]+1.0);
f[c][k]=;//
int to=goal[c][k];
for(int i=head[k];i;i=edge[i].next)
f[c][k]+=P*dfs(to,edge[i].to);
f[c][k]+=P*dfs(to,k);
return f[c][k];
}
int main()
{
scanf("%d%d%d%d",&n,&m,&cc,&kk);
for(int i=,x,y;i<=m;i++)
{
scanf("%d%d",&x,&y);
add(x,y); add(y,x);
d[x]+=1.0; d[y]+=1.0;
}
memset(dis,0x3f,sizeof dis); inf=dis[][];
for(int i=;i<=n;i++)bfs(i);
for(int i=;i<=n;i++)//cc
for(int j=;j<=n;j++)//kk
{
if(dis[i][j]==inf)continue;
if(dis[i][j]<=){goal[i][j]=j; continue;}
int mx=inf,t=inf;
for(int k=head[i];k;k=edge[k].next)
{
int u=edge[k].to;
if(dis[u][j]<mx || (dis[u][j]==mx&&u<t))mx=dis[u][j],t=u;
}
int mx2=inf,t2=inf;
for(int k=head[t];k;k=edge[k].next)
{
int u=edge[k].to;
if(dis[u][j]<mx2 || (dis[u][j]==mx2&&u<t2))mx2=dis[u][j],t2=u;
}
goal[i][j]=t2;
}
memset(f,-,sizeof f);
ans=dfs(cc,kk);
printf("%.3lf",ans);
return ;
}

bzoj1415 [Noi2005]聪聪和可可——概率期望的更多相关文章

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

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

  2. 【bzoj1415】 Noi2005—聪聪和可可

    http://www.lydsy.com/JudgeOnline/problem.php?id=1415 (题目链接) 题意 一张图,聪聪想吃可可.每单位时间聪聪可以先移动两次:可可后移动一次或停在原 ...

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

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

  4. [BZOJ1415][NOI2005]聪聪与可可

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

  5. cogs 341:[NOI2005] 聪聪与可可

    ★★   输入文件:cchkk.in   输出文件:cchkk.out   简单对比 时间限制:1 s   内存限制:256 MB [问题描述] 在一个魔法森林里,住着一只聪明的小猫聪聪和一只可爱的小 ...

  6. NOI2005 聪聪和可可

    Sol 记忆化搜索. \(f[u][v]\) 表示聪聪在 \(u\) ,可可在 \(v\) ,聪聪抓到可可的期望. 预处理出 \(u\) 到 \(v\) 最短路径编号最小的点,记为 \(g[u][v] ...

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

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

  8. 【BZOJ1415】 [Noi2005]聪聪和可可 概率与期望

    其实题不难,不知提交了几次...不能代码MD...注意一些基本问题...SB概率题 #include <iostream> #include <cstdio> #include ...

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

    [BZOJ1415][NOI2005]聪聪和可可(动态规划,数学期望) 题面 BZOJ 题解 先预处理出当可可在某个点,聪聪在某个点时 聪聪会往哪里走 然后记忆化搜索一下就好了 #include< ...

随机推荐

  1. NOI模拟赛(3.8)Problem B

    Description Alice和Bob在玩一个游戏,给出一张n*m的棋盘,上面有一些点是障碍,游戏的开始,Alice选定棋盘上任意一个不是障碍的格子,并且将一枚棋子放在其中,然后Bob先手,两人轮 ...

  2. 图论算法——最短路径Dijkstra,Floyd,Bellman Ford

    算法名称 适用范围 算法过程 Dijkstra 无负权 从s开始,选择尚未完成的点中,distance最小的点,对其所有边进行松弛:直到所有结点都已完成 Bellman-Ford 可用有负权 依次对所 ...

  3. python 爬虫示例,方便日后参考

    参考网址:https://zhuanlan.zhihu.com/p/32037625 def getOneMoviesInfo(Mid,url): import requests from lxml ...

  4. NYOJ-768移位密码,最简单的代替密码;

    移位密码 时间限制:1000 ms  |  内存限制:65535 KB 难度:0 ->   Link   <- 还有1个半小时考信息安全导论,昨晚心血来潮在oj上看到这几个题,简直就是水啊 ...

  5. 讨论几种数据列Column的特性(上)

    之前笔者写过一个系列<索引列的usable和visible>(http://space.itpub.net/17203031/viewspace-688135),详细讨论了索引列的usab ...

  6. hdu 5029树链剖分

    /* 解:标记区间端点,按深度标记上+下-. 然后用线段树维护求出最小的,再将它映射回来 */ #pragma comment(linker, "/STACK:102400000,10240 ...

  7. MT6753/MT6755 呼吸灯功能添加

    利用mtk pmic自带的呼吸灯模式: 主要修改代码: kernel-3.10/drivers/misc/mediatek/leds/mt6755/leds.c   int mt_brightness ...

  8. P1219 八皇后 洛谷

    题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上面的布局可以用序列2 4 6 1 3 ...

  9. Ubuntu 16.04安装TeamViewer

    安装i386库: sudo apt-get install libc6:i386 libgcc1:i386 libasound2:i386 libexpat1:i386 libfontconfig1: ...

  10. cocos2d-x+lua开发模式下编辑器的选择

    原本打算直接用CocosIDE的,毕竟是官方出品,并且支持Android远程调试,windows下的调试也非常方便,调试的信息也非常全,智能提示也不错.好了,一切看上去非常完美,可是它有一个致命缺陷, ...