[NOI2005]聪聪与可可
题目大意:有小a和小b,其中一个人到处乱走,每次走一步;另一个人抄近路逼近,每次1-2步。求期望路程。
整解:跑1000遍最短路/bfs,求两两距离,然后找从x逼近y第一步去哪,最后期望dp收场。
dp方程很简单,关键在于实现。
代码:
#include<queue>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define N 1050
int n,E,xr,xz,hed[N],cnt;
double ind[N];
struct EG
{
int to,nxt;
}e[*N];
void ae(int f,int t)
{
e[++cnt].to = t;
e[cnt].nxt = hed[f];
hed[f] = cnt;
}
int dis[N][N],chos[N][N];
bool vis[N];
struct node
{
int x,d;
node(){}
node(int x,int d):x(x),d(d){}
friend bool operator < (node a,node b)
{
return a.d>b.d;
}
}tp;
priority_queue<node>q;
void dij(int rt)
{
dis[rt][rt]=;
memset(vis,,sizeof(vis));
q.push(node(rt,));
while(!q.empty())
{
tp = q.top();
q.pop();
int u = tp.x;
if(vis[u])continue;
vis[u]=;
for(int j=hed[u];j;j=e[j].nxt)
{
int to = e[j].to;
if(dis[rt][to]>dis[rt][u]+)
{
dis[rt][to]=dis[rt][u]+;
q.push(node(to,dis[rt][to]));
}
}
}
}
double f[N][N];
double dp(int x,int y)
{
if(f[x][y]+1.0!=)return f[x][y];
if(x==y)return f[x][y]=0.0;
if(dis[x][y]<=)return f[x][y]=1.0;
f[x][y]=;
int k = chos[chos[x][y]][y];//走两步
for(int j=hed[y];j;j=e[j].nxt)
f[x][y]+=dp(k,e[j].to);
f[x][y]+=dp(k,y);
f[x][y] = (f[x][y]/(ind[y]+1.0))+1.0;
return f[x][y];
}
int main()
{
// freopen("eat.in","r",stdin);
// freopen("eat.out","w",stdout);
scanf("%d%d%d%d",&n,&E,&xr,&xz);
for(int u,v,i=;i<=E;i++)
{
scanf("%d%d",&u,&v);
ae(u,v),ae(v,u);
ind[u]++,ind[v]++;
}
memset(dis,0x3f,sizeof(dis));
for(int i=;i<=n;i++)
dij(i);
memset(chos,0x3f,sizeof(chos));
for(int i=;i<=n;i++)
{
for(int j=;j<=n;j++)
{
if(dis[i][j]==0x3f3f3f3f||i==j)continue;
for(int k=hed[i];k;k=e[k].nxt)
{
int to = e[k].to;
if(dis[to][j]+==dis[i][j]&&to<chos[i][j])
chos[i][j]=to;
}
}
}
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
f[i][j]=-1.0;
printf("%.3lf\n",dp(xr,xz));
return ;
}
[NOI2005]聪聪与可可的更多相关文章
- 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), ...
- 【BZOJ1415】【NOI2005】聪聪和可可(动态规划,数学期望)
[BZOJ1415][NOI2005]聪聪和可可(动态规划,数学期望) 题面 BZOJ 题解 先预处理出当可可在某个点,聪聪在某个点时 聪聪会往哪里走 然后记忆化搜索一下就好了 #include< ...
- 【NOI2005】聪聪和可可 概率与期望 记忆化搜索
1415: [Noi2005]聪聪和可可 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1635 Solved: 958[Submit][Statu ...
- 【BZOJ 1415】 1415: [Noi2005]聪聪和可可 (bfs+记忆化搜索+期望)
1415: [Noi2005]聪聪和可可 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1640 Solved: 962 Description I ...
- 【BZOJ】1415: [Noi2005]聪聪和可可【期望】【最短路】【记忆化搜索】
1415: [Noi2005]聪聪和可可 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2335 Solved: 1373[Submit][Stat ...
- 【BZOJ】【1415】【NOI2005】聪聪和可可
数学期望+记忆化搜索 论文:<浅析竞赛中一类数学期望问题的解决方法>——汤可因 中的第一题…… Orz 黄学长 我实在是太弱,这么简单都yy不出来…… 宽搜预处理有点spfa的感觉= = ...
- BZOJ_1415_[Noi2005]聪聪和可可_概率DP+bfs
BZOJ_1415_[Noi2005]聪聪和可可_概率DP+bfs Description Input 数据的第1行为两个整数N和E,以空格分隔,分别表示森林中的景点数和连接相邻景点的路的条数. 第2 ...
- P4206[NOI2005]聪聪与可可
链接P4206 [NOI2005]聪聪与可可 类似于开车旅行,如果老鼠确定了那么猫的路线是确定的. 预处理\(g_{i,j}\)表示老鼠在\(i\)号点,猫的下一步方向,\(Bfs\)就行了 设\(f ...
- BZOJ 1415 【NOI2005】 聪聪和可可
题目链接:聪聪和可可 一道水题--开始还看错题了,以为边带权--强行\(O(n^3)\)预处理-- 首先,我们显然可以预处理出一个数组\(p[u][v]\)表示可可在点\(u\),聪聪在点\(v\)的 ...
- 【bzoj1415】 Noi2005—聪聪和可可
http://www.lydsy.com/JudgeOnline/problem.php?id=1415 (题目链接) 题意 一张图,聪聪想吃可可.每单位时间聪聪可以先移动两次:可可后移动一次或停在原 ...
随机推荐
- Linux - 常用命令索引
文件和目录操作 pwd - 显示当前所在的位置 cd - 切换目录 文件过滤及内容编辑 ... 文本处理三剑客 ... 系统信息查询与搜索文件 ... 文件备份与压缩 ... 用户管理与信息查询 .. ...
- mac上 mysql 突然无法启动的问题
创建: 2018/02/12 更新: 2018/02/12 补充如何不用sudo 更新: 2018/02/24 补充解决方案1,纠正不用sudo的方案.纠正一些错别字 更新: 2018/08/20 补 ...
- [App Store Connect帮助]九、衡量 App 表现(1)分析和报告概述
App Store Connect 提供如下分析和报告,以衡量您 App 的表现并查看向您支付的最终付款. App 分析 通过 App Store 展示次数.产品页面查看次数.销售额.App 使用次数 ...
- [App Store Connect帮助]七、在 App Store 上发行(3.3)提交至“App 审核”:解决 App 拒绝问题
如果“App 审核”或“Beta 版 App 审核”拒绝了您的 App,您可以与 Apple 沟通并在解决方案中心中解决问题. 来自 Apple 的通讯信息包含有关 App 拒绝的信息,其中包括该 A ...
- Java-String 类的常用方法
Java 中 String 类的常用方法 Ⅰ String 类提供了许多用来处理字符串的方法,例如,获取字符串长度.对字符串进行截取.将字符串转换为大写或小写.字符串分割等,下面我们就来领略它的强大之 ...
- 移动游戏By HYJ
暴力求SG函数即可,记忆化贼方便 /*program from Wolfycz*/ #include<cmath> #include<cstdio> #include<c ...
- QT5每日一学(五)QT布局管理器
Qt中的布局管理器主要包括 QBoxLayout基本布局管理器 QGridLayout栅格布局管理器 QFormLayout窗体布局管理器 而基本布局管理器又分为QHBoxLayout水平布局管理器和 ...
- ACM_不知所措的统计员
Problem Description: GDUFE-GAME完美结束,按照惯例,会有一篇报道,描述活动期间的盛况,因此相关人员找到负责统计的ASDF,但是ASDF只知道第i个人在S_i时进场,在E_ ...
- composer 加快更新速度
一.使用代理 set http_proxy=http://127.0.0.1:8087 //Windows export http_proxy=http://127.0.0.1:8087 //linu ...
- spring入门笔记-(一)、spring boot HelloWorld
什么是spring boot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员 ...