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

Input
Output
Sample Input
4 3
1 4
1 2
2 3
3 4
【输入样例2】
9 9
9 3
1 2
2 3
3 4
4 5
3 6
4 6
4 7
7 8
8 9
Sample Output
【输出样例1】
1.500
【输出样例2】
2.167
先求出dis[i][j]表示i和j之间的最短路,这步只需要对n个点进行bfs。
然后推出mov[i][j]表示聪聪在i点,可可在j点时聪聪再走一步会去几号点。
设F[i][j]表示聪聪在i点,可可在j点,聪聪吃到可可的期望步数。
因为聪聪一次走两步,可可每次走一步。
相当于每个回合聪聪都离可可进了一步。
于是DP转移是没有环的,直接记忆化搜索即可。
代码:
#include <cstdio>
#include <string.h>
#include <algorithm>
using namespace std;
#define N 1050
#define inf 0x3f3f3f3f
typedef double f2;
f2 f[N][N];
int head[N],to[N<<1],nxt[N<<1],cnt,dis[N][N],n,m,S,T,Q[N],l,r,mov[N][N],out[N],vis[N];
inline void add(int u,int v) {
to[++cnt]=v; nxt[cnt]=head[u]; head[u]=cnt; out[u]++;
}
void bfs(int s) {
memset(vis,0,sizeof(vis)); l=r=0;
memset(dis[s],0x3f,sizeof(dis[s]));
Q[r++]=s;
while(l<r) {
int x=Q[l++],i; vis[x]=1;
for(i=head[x];i;i=nxt[i]) {
if(!vis[to[i]]) {
dis[s][to[i]]=dis[s][x]+1; vis[to[i]]=1;
Q[r++]=to[i];
}
}
}
}
f2 DP(int s,int t) {
if(f[s][t]!=-1) return f[s][t];
if(s==t) return f[s][t]=0;
f2 re=0;
int i,t1=mov[s][t],t2=mov[t1][t];
if(t1==t||t2==t) return 1;
for(i=head[t];i;i=nxt[i]) {
int y=to[i];
re+=DP(t2,y)+1;
}
re+=DP(t2,t)+1;
return f[s][t]=re/(out[t]+1);
}
int main() {
scanf("%d%d",&n,&m);
int i,x,y,j,k;
scanf("%d%d",&S,&T);
for(i=1;i<=m;i++) {
scanf("%d%d",&x,&y); add(x,y); add(y,x);
}
for(i=1;i<=n;i++) bfs(i);
for(i=1;i<=n;i++) {
for(j=1;j<=n;j++) {
f[i][j]=-1;
if(i!=j) {
for(k=head[i];k;k=nxt[k]) {
if(!mov[i][j]) mov[i][j]=to[k];
else if(dis[to[k]][j]<dis[mov[i][j]][j]||(dis[to[k]][j]==dis[mov[i][j]][j]&&to[k]<mov[i][j])) mov[i][j]=to[k];
}
}
}
}
printf("%.3f\n",DP(S,T));
}
BZOJ_1415_[Noi2005]聪聪和可可_概率DP+bfs的更多相关文章
- BZOJ_3191_[JLOI2013]卡牌游戏_概率DP
BZOJ_3191_[JLOI2013]卡牌游戏_概率DP Description N个人坐成一圈玩游戏.一开始我们把所有玩家按顺时针从1到N编号.首先第一回合是玩家1作为庄家.每个回合庄家都会随 ...
- BZOJ_1778_[Usaco2010 Hol]Dotp 驱逐猪猡_概率DP+高斯消元
BZOJ_1778_[Usaco2010 Hol]Dotp 驱逐猪猡_概率DP+高斯消元 题意: 奶牛们建立了一个随机化的臭气炸弹来驱逐猪猡.猪猡的文明包含1到N (2 <= N <= 3 ...
- bzoj1415 [Noi2005]聪聪和可可【概率dp 数学期望】
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1415 noip2016 D1T3,多么痛的领悟...看来要恶补一下与期望相关的东西了. 这是 ...
- HYSBZ 1415 - 聪聪和可可(概率DP)
http://vjudge.net/problem/viewProblem.action?id=20613 题意:不用说了,中文题. 这个题可以用概率DP来做. 题中要求猫抓到老鼠的时间期望.分析一下 ...
- luoguP4206 [NOI2005]聪聪与可可 期望概率DP
首先,分析一下这个猫和鼠 猫每局都可以追老鼠一步或者两步,但是除了最后的一步,肯定走两步快些.... 既然猫走的步数总是比老鼠多,那么它们的距离在逐渐缩小(如果这题只能走一步反而不能做了...) 猫不 ...
- BZOJ 1415 聪聪和可可(概率DP)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1415 题意:一个无向图,一个猫.一只老鼠.在任意时刻猫知道老鼠在哪个顶点上.每次移动猫先 ...
- bzoj 1415: [Noi2005]聪聪和可可【期望dp+bfs】
因为边权为1所以a直接bfs瞎搞就行--我一开始竟然写了个spfa #include<iostream> #include<cstdio> #include<queue& ...
- 【NOI2005】聪聪和可可 概率与期望 记忆化搜索
1415: [Noi2005]聪聪和可可 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1635 Solved: 958[Submit][Statu ...
- 【BZOJ1415】 [Noi2005]聪聪和可可 概率与期望
其实题不难,不知提交了几次...不能代码MD...注意一些基本问题...SB概率题 #include <iostream> #include <cstdio> #include ...
随机推荐
- CentOS6 CentOS7 yum安装图形界面
CentOS6 yum安装图形界面yum groupinstall -y "Desktop" "Desktop Platform" "Desktop ...
- 机器学习基础-Logistic回归1
利用Logistic回归进行分类的主要思想是:根据现有数据对分类边界线建立回归公式,以此进行分类. 训练分类器时的做法就是寻找最佳拟合参数,使用的时最优化算法. 优点:计算代价不高,利于理解和实现. ...
- OpenJudge 6042 雇佣兵
37:雇佣兵 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 雇佣兵的体力最大值为M,初始体力值为0.战斗力为N.拥有X个能量元素. 当雇佣兵的体力值恰好为M时,才可以参加一个 ...
- [CodePlus2017]晨跑
Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 166 Solved: 125 Description "无体育,不清华".&qu ...
- [Vijos] 天才的记忆
背景 神仙飞啊飞 描述 从前有个人名叫W and N and B,他有着天才般的记忆力,他珍藏了许多许多的宝藏.在他离世之后留给后人一个难题(专门考验记忆力的啊!),如果谁能轻松回答出这个问题,便可以 ...
- CF613A:Peter and Snow Blower
用一个圆心在(x,y)的圆环覆盖一个n边形,顺或逆时针给出n边形所有顶点,求圆环最小面积. 卡了好久,各种傻逼错误.. 题目就是让我们固定一大一小两个边界圆,我们来看看这两个圆满足什么条件. 首先外面 ...
- Pycharm工具配置记录
安装Pycharm工具后,常用配置方法记录: 1:开启“设置”快捷按钮 2:进入设置后,选择或添加python解释器 当然,python解释器需要提前安装好. 3:在设置里,配置默认模板 4 :自动更 ...
- 洛谷——P1265 公路修建
P1265 公路修建 题目描述 某国有n个城市,它们互相之间没有公路相通,因此交通十分不便.为解决这一“行路难”的问题,政府决定修建公路.修建公路的任务由各城市共同完成. 修建工程分若干轮完成.在每一 ...
- POJ 1511 【heap+dij】
题意: t组样例. 每组有n个节点,有m条单向边. 有m组输入,每组a b c 表示从a到b的单向边的权值是c. 求解,从编号为1的节点出发,有n-1个人,要求他们分别到达编号从2到n的节点再返回,所 ...
- ArcGIS中Shapefile和Geodatabase坐标容差的问题
转自原文 ArcGIS中Shapefile和Geodatabase坐标容差的问题 ArcGIS中,Shapefile文件是没有容差设置的,所以无论什么单位的坐标写入shapefile文件,都不存在容差 ...