bzoj1415
比较简单的数学期望,先预处理出当聪聪在i,可可在j时聪聪往哪个点走
然后做dp即可,我用了记忆化搜索实现
type node=record
po,next:longint;
end; var d,pos:array[..,..] of longint;
f:array[..,..] of double;
v:array[..] of boolean;
e:array[..] of node;
c,p,q:array[..] of longint;
len,s,t,i,j,n,m,x,y:longint; procedure add(x,y:longint);
begin
inc(len);
e[len].po:=y;
e[len].next:=p[x];
p[x]:=len;
end; procedure bfs(s:longint);
var f,r,i,x,y:longint;
begin
d[s,s]:=;
fillchar(v,sizeof(v),false);
v[s]:=true;
f:=;
r:=;
i:=p[s];
while i<> do
begin
y:=e[i].po;
v[y]:=true;
inc(r);
q[r]:=y;
d[s,y]:=;
pos[s,y]:=y;
i:=e[i].next;
end;
while f<=r do
begin
x:=q[f];
i:=p[x];
while i<> do
begin
y:=e[i].po;
if not v[y] then
begin
d[s,y]:=d[s,x]+;
pos[s,y]:=pos[s,x];
v[y]:=true;
inc(r);
q[r]:=y;
end
else if (d[s,y]=d[s,x]+) and (pos[s,x]<pos[s,y]) then
pos[s,y]:=pos[s,x]; i:=e[i].next;
end;
inc(f);
end;
end; function dfs(x,y:longint):double;
var i,w:longint;
begin
if x=y then exit();
if (pos[x,y]=y) or (pos[pos[x,y],y]=y) then exit();
if f[x,y]<>- then exit(f[x,y]);
i:=p[y];
f[x,y]:=dfs(pos[pos[x,y],y],y);
while i<> do
begin
w:=e[i].po;
f[x,y]:=f[x,y]+dfs(pos[pos[x,y],y],w);
i:=e[i].next;
end;
f[x,y]:=f[x,y]/(c[y]+)+;
exit(f[x,y]);
end; begin
readln(n,m);
readln(s,t);
for i:= to m do
begin
readln(x,y);
add(x,y);
add(y,x);
inc(c[x]);
inc(c[y]);
end;
for i:= to n do
begin
for j:= to n do
f[i,j]:=-;
pos[i,i]:=i;
f[i,i]:=;
bfs(i);
end;
writeln(dfs(s,t)::);
end.
bzoj1415的更多相关文章
- 【bzoj1415】 Noi2005—聪聪和可可
http://www.lydsy.com/JudgeOnline/problem.php?id=1415 (题目链接) 题意 一张图,聪聪想吃可可.每单位时间聪聪可以先移动两次:可可后移动一次或停在原 ...
- 【BZOJ1415】【NOI2005】聪聪和可可(动态规划,数学期望)
[BZOJ1415][NOI2005]聪聪和可可(动态规划,数学期望) 题面 BZOJ 题解 先预处理出当可可在某个点,聪聪在某个点时 聪聪会往哪里走 然后记忆化搜索一下就好了 #include< ...
- bzoj1415[NOI2005]聪聪和可可-期望的线性性
这道题之前我写过一个巨逗比的写法(传送门:http://www.cnblogs.com/liu-runda/p/6220381.html) 当时的原因是这道题可以抽象出和"绿豆蛙的归宿&qu ...
- bzoj1415[NOI2005]聪聪和可可
之前做的一些图上的期望步数的题大多用到高斯消元来求解(HNOI游走,SDOI走迷宫,etc),因此我一开始做这道题的时候想偏了- 这道题的性质:聪聪和可可之间的最短路长度严格递减.因为聪聪总可以多走一 ...
- 【BZOJ1415】 [Noi2005]聪聪和可可 概率与期望
其实题不难,不知提交了几次...不能代码MD...注意一些基本问题...SB概率题 #include <iostream> #include <cstdio> #include ...
- [BZOJ1415]聪聪和可可
Input 数据的第1行为两个整数N和E,以空格分隔,分别表示森林中的景点数和连接相邻景点的路的条数. 第2行包含两个整数C和M,以空格分隔,分别表示初始时聪聪和可可所在的景点的编号. 接下来E行,每 ...
- BZOJ1415[Noi2005]聪聪和可可——记忆化搜索+期望dp
题目描述 输入 数据的第1行为两个整数N和E,以空格分隔,分别表示森林中的景点数和连接相邻景点的路的条数. 第2行包含两个整数C和M,以空格分隔,分别表示初始时聪聪和可可所在的景点的编号. 接下来E行 ...
- BZOJ1415: [Noi2005]聪聪和可可 最短路 期望概率dp
首先这道题让我回忆了一下最短路算法,所以我在此做一个总结: 带权: Floyed:O(n3) SPFA:O(n+m),这是平均复杂度实际上为O(玄学) Dijkstra:O(n+2m),堆优化以后 因 ...
- 【bzoj1415】【聪聪和可可】期望dp(记忆化搜索)+最短路
[pixiv] https://www.pixiv.net/member_illust.php?mode=medium&illust_id=57148470 Descrition 首先很明显是 ...
随机推荐
- java.lang.Exception: Socket bind failed 服务器端口冲突-->修改端口
需要修改三个端口号:%apache_tomcat6%/conf/server.xml 四月 11, 2014 11:39:25 上午 org.apache.catalina.core.AprLifec ...
- .net日志专用
一个简单的.net写日志方法 - 可能的改进点 昨天有个朋友在评论的时候问我如下代码在web开发中有什么问题 public void Log(string msg) { System.IO.File. ...
- 【实习记】2014-08-29算法学习Boyer-Moore和最长公共子串(LCS)
昨天的问题方案一:寻找hash函数,可行性极低.方案二:载入内存,维护成一个守护进程的服务.难度比较大.方案三:使用前5位来索引,由前3位增至前5位唯一性,理论上是分拆记录扩大100倍,但可以 ...
- php安装中的错误
http://www.cnblogs.com/kristain/articles/3809243.html 借鉴php安装错误 2013-01-04 19:16:49 分类: 系统运维 环境: ...
- 安装hadoop多节点 各种整理
ubuntu烧制usb启动盘链接: 点击打开链接https://help.ubuntu.com/community/Installation/FromUSBStick ubuntu磁盘分区: 点击打开 ...
- jQuery插件综合应用(一)注册
一.介绍 注册和登录是每个稍微有点规模的网站就应该有的功能.登陆功能与注册功能类似,也比注册功能要简单些.所以本文就以注册来说明jQuery插件的应用. jQuery插件的使用非常简单,如果只按照jQ ...
- React新接触
html5页面的开始引入: <script src="../build/react.js"></script> <!--核心库--> < ...
- 微信公众号-加解密数据demo坑
demo里面的MsgSignature作为url参数一部分了,demo也不更新下 坑爹的微信! 解密信息部分 include_once "wxBizMsgCrypt.php"; $ ...
- php计算最后一次,第一次字符串出现位置
strpos($str, n) 首次,n在str第一次出现位置, strrpos($str, n) 最后一次,n在str最后一次出现位置 strripos区分大小写
- ionic移动开发入门
学习资料:http://www.ionic.wang http://www.ionicframework.com/