传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1415

noip2016 D1T3,多么痛的领悟。。。看来要恶补一下与期望相关的东西了。

这是一道经典的求期望的题,尽管我的代码里把那个记忆化搜索那个叫做dp,但事实上这不是动态规划,只是递推。

先预处理出x[i][j],表示聪聪在i,可可在j时,下一步聪聪到达的顶点标号,f[i][j]是那张记忆化搜索的表,表示聪聪在i,可可在j时,期望所需的时间,out[i]表示i点的出度(其实就是度啦,无向图没什么入度出度的)。显然,下一个单位时间聪聪的位置是x[x[i][j]][j],而可可是在所有与j相邻的节点或者j自己中随机挑一个到达,每个的概率都是1 / (out[j] + 1),所以有

f[i][j] = ( sigma(  f[x[x[i][j]][j]][k]  ) + f[x[x[i][j]][j]][j] ) / (out[j] + 1) + 1,其中k表示每个与j相邻的节点。

然后写一个记忆化搜索就完事咯~

#include <cstdio>
#include <cstring>const int maxn = 1005, maxe = 1005;int n, e, ini_neko, ini_mouse, t1, t2;
int head[maxn], to[maxe << 1], next[maxe << 1], lb, out[maxn];
int que[maxn], head_, tail, h, x[maxn][maxn], d[maxn][maxn];
double f[maxn][maxn];inline void ist(int aa, int ss) {to[lb] = ss;next[lb] = head[aa];head[aa] = lb;++out[aa];++lb;
}
double dp(int i, int j) {if (f[i][j] != -1.0) {return f[i][j];}if (i == j) {return f[i][j] = 0.0;}if (x[i][j] == j) {return f[i][j] = 1.0;}if (x[x[i][j]][j] == j) {return f[i][j] = 1.0;}f[i][j] = 0.0;for (int k = head[j]; k != -1; k = next[k]) {f[i][j] += dp(x[x[i][j]][j], to[k]);}f[i][j] = (f[i][j] + dp(x[x[i][j]][j], j)) / (double)(out[j] + 1) + 1;return f[i][j];
}int main(void) {//freopen("in.txt", "r", stdin);memset(head, -1, sizeof head);memset(next, -1, sizeof next);for (int i = 0; i < maxn; ++i) {for (int j = 0; j < maxn; ++j) {f[i][j] = -1.0;}}scanf("%d%d", &n, &e);scanf("%d%d", &ini_neko, &ini_mouse);while (e--) {scanf("%d%d", &t1, &t2);ist(t1, t2);ist(t2, t1);}memset(d, -1, sizeof d);for (int i = 1; i <= n; ++i) {memset(que, 0, sizeof que);head_ = tail = 0;que[tail++] = i;d[i][i] = 0;while (head_ != tail) {h = que[head_++];for (int j = head[h]; j != -1; j = next[j]) {if (d[i][to[j]] == -1) {d[i][to[j]] = d[i][h] + 1;que[tail++] = to[j];}}}}memset(x, 0x3c, sizeof x);for (int i = 1; i <= n; ++i) {for (int k = head[i]; k != -1; k = next[k]) {for (int j = 1; j <= n; ++j) {if (d[i][j] == d[to[k]][j] + 1 && x[i][j] > to[k]) {x[i][j] = to[k];}}}}printf("%.3f\n", dp(ini_neko, ini_mouse));return 0;
}

  

转载于:https://www.cnblogs.com/ciao-sora/p/6111241.html

bzoj1415 [Noi2005]聪聪和可可【概率dp 数学期望】相关推荐

  1. 动态规划 —— 概率 DP 与期望 DP

    [概述] 由于概率和期望具有线性性质,使得可以在概率和期望之间建立一定的递推关系,这样就可以通过动态规划来解决一些概率问题,例如概率和期望的最值问题就常常使用概率 DP.期望 DP 来解决. 与其他的 ...

  2. 浅谈概率与数学期望问题

    浅谈概率与数学期望问题 前言 ​ 在算法竞赛中,概率与数学期望的问题经常出现,大多数都要找出递推式子,在计算数学期望的时候,需要回忆起概率论中一个非常重要的公式: E ( a X + b Y ) = ...

  3. 数学1——概率与数学期望

    数学1--概率与数学期望 本文作者frankchenfu,blogs网址http://www.cnblogs.com/frankchenfu/,转载请保留此文字. 1.什么是数学期望? 数学期望亦称期 ...

  4. 《算法竞赛进阶指南》数论篇(3)-组合计数,Lucas定理,Catalan数列,容斥原理,莫比乌斯反演,概率与数学期望,博弈论之SG函数

    文章目录 组合计数 例题:Counting swaps Lucas定理 Cnm≡Cnmodpmmodp∗Cn/pm/p(modp)C_n^m\equiv C_{n\ mod\ p}^{m\ mod\ ...

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

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

  6. LightOJ 1030 【概率DP求期望】

    借鉴自:https://www.cnblogs.com/keyboarder-zsq/p/6216762.html 题意:n个格子,每个格子有一个值.从1开始,每次扔6个面的骰子,扔出几点就往前几步, ...

  7. SGU495 Kids and Prizes 概率DP,期望公式

    题目大意:有N个盒子,里面都放着礼物,M个人依次去选择盒子,每人仅能选一次,如果里面有礼物则将礼物取出来,把空盒子放回原位,若没有礼物,则把空盒子放回原位.求礼物被拿走的个数的数学期望. 一.期望dp ...

  8. 【BZOJ - 3036】绿豆蛙的归宿(概率DAG图dp,拓扑排序,概率dp,期望的线性性)

    题干: 随着新版百度空间的下线,Blog宠物绿豆蛙完成了它的使命,去寻找它新的归宿. 给出一个有向无环的连通图,起点为1终点为N,每条边都有一个长度.绿豆蛙从起点出发,走向终点. 到达每一个顶点时,如 ...

  9. 容斥原理和概率与数学期望

    容斥原理就是全集减去其他不满足的集合的并集,E-(E1∪E2∪E3∪.....∪Ek)=E-E1-E2-E3-...+E1∩E2+E2∩E3..意思是奇数个的符号就是-,偶数个就是+,一般用二进制枚举 ...

最新文章

  1. 离职后为讨薪资删公司数据,一技术开发工程师被判 11 个月
  2. F5配置irule,使其系统在X个时间段提供服务,其余时间显示维护页面
  3. java批量导出word_java 批量生成word 文件
  4. 【零基础学习iOS开发】【02-C语言】10-函数
  5. 使用 utmpdump 监控 CentOS 用户登录历史
  6. PHP对抗web扫描器的脚本技巧
  7. 电脑销售渠道_双十一遇上英雄联盟S10,苏宁游戏装备销售增长258%
  8. 【Pytorch神经网络理论篇】 13 深层卷积神经网络介绍+池化操作+深层卷积神经网络实战
  9. go系列(1)- linux下安装go环境
  10. mysql sign_mysql - 随笔分类 - signheart - 博客园
  11. 计算机如何实现截长图功能,只会Ctrl+Alt+A?告诉你电脑截长图的5大方法
  12. 智能手机或许非诺基亚最佳战场,功能手机才是出路?
  13. js 网页烟花效果
  14. 使用MybatisPlus实现ShiroRealm
  15. Oracle 校验统一社会信用代码函数
  16. 实验:配置Trunk
  17. go语言-channel使用(二十一)
  18. springboot大学生青年志愿者管理的设计与实现毕业设计源码101605
  19. vue中使用电子签名
  20. Echarts 用图形纹理来填充颜色(color - pattern)

热门文章

  1. 跟女友旅游三天,还好Python治好了我的内耗
  2. C/C++跨平台的的预编译宏
  3. 新开发的软件,功能实在了不起,需要自行下载。
  4. CentOS 7忘记密码怎么办?
  5. 百度人脸识别---横屏,竖屏的实现
  6. 网络变压器没有用到的脚
  7. 合同物流能否做好VMI仓?
  8. opengl教程2,你好顶点
  9. Python爬取王者荣耀全英雄台词语音及对应的文本
  10. 装flashplayer debug提示不是最新版本的解决办法 ~~