传送门

题意:小兔子乖乖~~~

题意·真:无向图吗,聪抓可,每个时间聪先走可后走,聪一次可以走两步,朝着里可最近且点编号最小的方向;可一次只一步,等概率走向相邻的点或不走

求聪抓住可的期望时间


和游走很像,只不过这道题限制了一个人走的方向,两人间的距离具有了阶段性!可以直接$DP$

求期望一般倒推

$f[i][j]$表示聪在$i$可在$j$抓住的期望时间

$bfs$预处理$g[i][j]$表示聪在$i$可在$j$下一步聪走到哪里

这样聪的行动就知道了,转移枚举可的行动就行啦

边界:$f[i][i]=0,\ f[i][j]=1:g[i][j]=j or g[g[i][j]][j]=j$

另一种做法:相信世界是善良的,永远输出正无穷

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
typedef long long ll;
const int N=;
inline int read(){
char c=getchar();int x=,f=;
while(c<''||c>''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*f;
} int n,m,a,b,de[N],u,v;
struct edge{
int v,ne;
}e[N<<];
int h[N],cnt;
inline void ins(int u,int v){
cnt++;
e[cnt].v=v;e[cnt].ne=h[u];h[u]=cnt;
cnt++;
e[cnt].v=u;e[cnt].ne=h[v];h[v]=cnt;
} int g[N][N];
int q[N],head,tail,d[N][N];
bool inq[N];
inline void lop(int &x){if(x==N) x=;}
void bfs(int s,int *g,int *d){
head=tail=;
memset(inq,,sizeof(inq));
q[tail++]=s; d[s]=; inq[s]=;
while(head!=tail){
int u=q[head++];inq[u]=;lop(head);
for(int i=h[u];i;i=e[i].ne){
int v=e[i].v;
if(d[v]>d[u]+ || (d[v]==d[u]+&&g[v]>g[u])){
d[v]=d[u]+;
g[v]= g[u]== ? v : g[u];
if(!inq[v]) q[tail++]=v,inq[v]=,lop(tail);
}
}
}
} double f[N][N];
double dfs(int a,int b){//printf("dfs %d %d\n",a,b);
if(a==b) return ;
if(g[a][b]==b || g[ g[a][b] ][b]==b) return ;
if(f[a][b]) return f[a][b];
double &re=f[a][b];
int t=g[ g[a][b] ][b];
re=dfs(t,b);
for(int i=h[b];i;i=e[i].ne) re+=dfs(t,e[i].v);
re=re/(de[b]+)+;
return re;
} int main(){
freopen("in","r",stdin);
n=read();m=read();a=read();b=read();
for(int i=;i<=m;i++) u=read(),v=read(),de[u]++,de[v]++,ins(u,v);
memset(d,,sizeof(d));
for(int i=;i<=n;i++) bfs(i,g[i],d[i]); //for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) printf("g %d %d %d\n",i,j,g[i][j]);
printf("%.3lf",dfs(a,b));
}

BZOJ 1415: [Noi2005]聪聪和可可 [DP 概率]的更多相关文章

  1. 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), ...

  2. BZOJ 1415 [NOI2005]聪聪与可可 (概率DP+dfs)

    题目大意:给你一个无向联通图,节点数n<=1000.聪聪有一个机器人从C点出发向在M点的可可移动,去追赶并吃掉可可,在单位时间内,机器人会先朝离可可最近的节点移动1步,如果移动一步机器人并不能吃 ...

  3. bzoj 1415 [Noi2005]聪聪和可可——其实无环的图上概率

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1415 乍一看和“游走”一样.于是高斯消元.n^2状态,复杂度n^6…… 看看TJ,发现因为聪 ...

  4. bzoj 1415: [Noi2005]聪聪和可可 期望dp+记忆化搜索

    期望dp水题~ 你发现每一次肯定是贪心走 2 步,(只走一步的话就可能出现环) 然后令 $f[i][j]$ 表示聪在 $i$,可在 $j$,且聪先手两个人碰上面的期望最小次数. 用记忆化搜索转移就行了 ...

  5. bzoj 1415: [Noi2005]聪聪和可可【期望dp+bfs】

    因为边权为1所以a直接bfs瞎搞就行--我一开始竟然写了个spfa #include<iostream> #include<cstdio> #include<queue& ...

  6. bzoj 1415: [Noi2005]聪聪和可可

    直接上记忆化搜索 #include<queue> #include<cstdio> #include<algorithm> using namespace std; ...

  7. BZOJ 1415: [Noi2005]聪聪和可可(记忆化搜索+期望)

    传送门 解题思路 还是比较简答的一道题.首先\(bfs\)把每个点到其他点的最短路求出来,然后再记忆化搜索.记搜的时候猫的走法是确定的,搜一下老鼠走法就行了. 代码 #include<iostr ...

  8. 【BZOJ】1415 [Noi2005]聪聪和可可 期望DP+记忆化搜索

    [题意]给定无向图,聪聪和可可各自位于一点,可可每单位时间随机向周围走一步或停留,聪聪每单位时间追两步(先走),问追到可可的期望时间.n<=1000. [算法]期望DP+记忆化搜索 [题解]首先 ...

  9. 【BZOJ】【1415】【NOI2005】聪聪和可可

    数学期望+记忆化搜索 论文:<浅析竞赛中一类数学期望问题的解决方法>——汤可因  中的第一题…… Orz 黄学长 我实在是太弱,这么简单都yy不出来…… 宽搜预处理有点spfa的感觉= = ...

随机推荐

  1. HDU--2015

    偶数求和 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  2. HDU--2021

    发工资咯:) Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  3. linux 内核提权

    不经意间找到了大牛总结的一些Linux提权exp 我直接借花献佛分享给大家 #CVE #Description #Kernels CVE-2017-1000367 [Sudo] (Sudo 1.8.6 ...

  4. javascript 对象-13

    对象 无序属性的集合,属性可以包含基本值.对象或者函数,简单理解为对象是若干属性的集合:我们常说的面向对象(oop)编程其实是指的一种编码的思想,简单理解为用对象来封装数据,利用封装.继承.多态对代码 ...

  5. grunt 插件开发注意事项

    grunt的插件机制 task.loadNpmTasks = function(name) { var root = path.resolve('node_modules'); var tasksdi ...

  6. 用adb录制手机屏幕视频

    adb shell screenrecord命令可以用来录制Android手机视频 screenrecord是一个shell命令,支持Android4.4(API level 19)以上,支持视频格式 ...

  7. move_uploaded_file

    move_uploaded_file() 函数将上传的文件移动到新位置. 若成功,则返回 true,否则返回 false. 语法 move_uploaded_file(file,newloc) 参数 ...

  8. Red Hat

    同义词 REDHAT一般指Red Hat Red Hat(红帽)公司(NYSE:RHT)是一家开源解决方案供应商,也是标准普尔500指数成员.总部位于美国北卡罗来纳州的罗利市,截止2015年3月3日, ...

  9. 【开发技术】Eclipse设置软tab(用4个空格字符代替)及默认utf-8文件编码(unix)

    Eclipse设置软tab(用4个空格字符代替)及默认utf-8文件编码(unix) 本文摘要: 1.如何配置Eclipse中编辑器支持softtab(用数个空格字符代替默认的tab缩进): 2.如何 ...

  10. Tomcat8配置Https协议,Tomcat配置Https安全访问,Tomcat Https配置

    Tomcat8配置Https协议,Tomcat配置Https安全访问,Tomcat Https配置 ============================== ©Copyright 蕃薯耀 2017 ...