比较简单的数学期望,先预处理出当聪聪在i,可可在j时聪聪往哪个点走
然后做dp即可,我用了记忆化搜索实现

  1. type node=record
  2. po,next:longint;
  3. end;
  4.  
  5. var d,pos:array[..,..] of longint;
  6. f:array[..,..] of double;
  7. v:array[..] of boolean;
  8. e:array[..] of node;
  9. c,p,q:array[..] of longint;
  10. len,s,t,i,j,n,m,x,y:longint;
  11.  
  12. procedure add(x,y:longint);
  13. begin
  14. inc(len);
  15. e[len].po:=y;
  16. e[len].next:=p[x];
  17. p[x]:=len;
  18. end;
  19.  
  20. procedure bfs(s:longint);
  21. var f,r,i,x,y:longint;
  22. begin
  23. d[s,s]:=;
  24. fillchar(v,sizeof(v),false);
  25. v[s]:=true;
  26. f:=;
  27. r:=;
  28. i:=p[s];
  29. while i<> do
  30. begin
  31. y:=e[i].po;
  32. v[y]:=true;
  33. inc(r);
  34. q[r]:=y;
  35. d[s,y]:=;
  36. pos[s,y]:=y;
  37. i:=e[i].next;
  38. end;
  39. while f<=r do
  40. begin
  41. x:=q[f];
  42. i:=p[x];
  43. while i<> do
  44. begin
  45. y:=e[i].po;
  46. if not v[y] then
  47. begin
  48. d[s,y]:=d[s,x]+;
  49. pos[s,y]:=pos[s,x];
  50. v[y]:=true;
  51. inc(r);
  52. q[r]:=y;
  53. end
  54. else if (d[s,y]=d[s,x]+) and (pos[s,x]<pos[s,y]) then
  55. pos[s,y]:=pos[s,x];
  56.  
  57. i:=e[i].next;
  58. end;
  59. inc(f);
  60. end;
  61. end;
  62.  
  63. function dfs(x,y:longint):double;
  64. var i,w:longint;
  65. begin
  66. if x=y then exit();
  67. if (pos[x,y]=y) or (pos[pos[x,y],y]=y) then exit();
  68. if f[x,y]<>- then exit(f[x,y]);
  69. i:=p[y];
  70. f[x,y]:=dfs(pos[pos[x,y],y],y);
  71. while i<> do
  72. begin
  73. w:=e[i].po;
  74. f[x,y]:=f[x,y]+dfs(pos[pos[x,y],y],w);
  75. i:=e[i].next;
  76. end;
  77. f[x,y]:=f[x,y]/(c[y]+)+;
  78. exit(f[x,y]);
  79. end;
  80.  
  81. begin
  82. readln(n,m);
  83. readln(s,t);
  84. for i:= to m do
  85. begin
  86. readln(x,y);
  87. add(x,y);
  88. add(y,x);
  89. inc(c[x]);
  90. inc(c[y]);
  91. end;
  92. for i:= to n do
  93. begin
  94. for j:= to n do
  95. f[i,j]:=-;
  96. pos[i,i]:=i;
  97. f[i,i]:=;
  98. bfs(i);
  99. end;
  100. writeln(dfs(s,t)::);
  101. end.

bzoj1415的更多相关文章

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

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

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

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

  3. bzoj1415[NOI2005]聪聪和可可-期望的线性性

    这道题之前我写过一个巨逗比的写法(传送门:http://www.cnblogs.com/liu-runda/p/6220381.html) 当时的原因是这道题可以抽象出和"绿豆蛙的归宿&qu ...

  4. bzoj1415[NOI2005]聪聪和可可

    之前做的一些图上的期望步数的题大多用到高斯消元来求解(HNOI游走,SDOI走迷宫,etc),因此我一开始做这道题的时候想偏了- 这道题的性质:聪聪和可可之间的最短路长度严格递减.因为聪聪总可以多走一 ...

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

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

  6. [BZOJ1415]聪聪和可可

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

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

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

  8. BZOJ1415: [Noi2005]聪聪和可可 最短路 期望概率dp

    首先这道题让我回忆了一下最短路算法,所以我在此做一个总结: 带权: Floyed:O(n3) SPFA:O(n+m),这是平均复杂度实际上为O(玄学) Dijkstra:O(n+2m),堆优化以后 因 ...

  9. 【bzoj1415】【聪聪和可可】期望dp(记忆化搜索)+最短路

    [pixiv] https://www.pixiv.net/member_illust.php?mode=medium&illust_id=57148470 Descrition 首先很明显是 ...

随机推荐

  1. python tornado+mongodb的使用

    tornado tar xvzf tornado-1.2.1.tar.gz cd tornado-1.2.1 python setup.py build sudo python setup.py in ...

  2. 向SQL2008R2导入Acess、excel数据

    一:导入Access数据 1.在sql2008查询分析 器中输入如下查询语句能查出access中的数据 SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLE ...

  3. UIView的常见属性

    UIView的常见属性: @interface UIView : UIResponder<NSCoding, UIAppearance, UIAppearanceContainer, UIDyn ...

  4. c语言中数组相关问题

    c语言中数组相关问题: 1.数组基本定义: 相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标.组成数组 ...

  5. c语言中结构体的定义、初始化及内存分配

    #include <stdio.h> struct person { char *name; int age; }; int main() { //结构体可以定义在函数内,也可以定义到函数 ...

  6. JDBC实现往MySQL插入百万级数据

    想往某个表中插入几百万条数据做下测试, 原先的想法,直接写个循环10W次随便插入点数据试试吧,好吧,我真的很天真.... DROP PROCEDURE IF EXISTS proc_initData; ...

  7. C#语言之“string格式的日期时间字符串转为DateTime类型”的方法(转)

    原文链接:http://www.cnblogs.com/Pickuper/articles/2058880.html 方法一:Convert.ToDateTime(string) string格式有要 ...

  8. 九度OJ 1107 搬水果 -- 哈夫曼树 2011年吉林大学计算机研究生机试真题

    题目地址:http://ac.jobdu.com/problem.php?pid=1107 题目描述: 在一个果园里,小明已经将所有的水果打了下来,并按水果的不同种类分成了若干堆,小明决定把所有的水果 ...

  9. C++11中新特性之:initializer_list详解

    C++11提供的新类型,定义在<initializer_list>头文件中. template< class T > class initializer_list; 先说它的用 ...

  10. js stringObject的indexOf方法

    我所写的这个是基本知识的基本知识,为什么我还是要写呢,所谓说好记性不如烂比头,作为一名前端开发人员,太多相似的代码见的又太多,但是又不常见,所以很容易忘记,那我把indexOf原理讲清楚 indexO ...