期望dp水题~

你发现每一次肯定是贪心走 2 步,(只走一步的话就可能出现环)

然后令 $f[i][j]$ 表示聪在 $i$,可在 $j$,且聪先手两个人碰上面的期望最小次数.

用记忆化搜索转移就行了.

code:

#include <queue>
#include <cstdio>
#include <vector>
#include <cstring>
#include <algorithm>
#define N 1004
#define LL long long
#define pb push_back
#define setIO(s) freopen(s".in","r",stdin)
using namespace std;
int n,m;
queue<int>q;
vector<int>G[N];
double dp[N][N];
int nxt[N][N],dis[N][N],vis[N],d[N],vised[N][N];
double f(int a,int b)
{
if(a==b) return 0.0;
if(nxt[a][b]==b) return 1.00;
if(nxt[nxt[a][b]][b]==b) return 1.00;
if(vised[a][b]) return dp[a][b];
vised[a][b]=1;
dp[a][b]=0.000;
for(int i=0;i<G[b].size();++i)
{
int v=G[b][i];
dp[a][b]+=(f(nxt[nxt[a][b]][b], v)+1.00)/(double)G[b].size();
}
return dp[a][b];
}
int main()
{
int i,j,A,B;
scanf("%d%d%d%d",&n,&m,&A,&B);
for(i=1;i<=m;++i)
{
int a,b;
scanf("%d%d",&a,&b);
G[a].pb(b),G[b].pb(a);
}
for(i=1;i<=n;++i)
{
memset(vis,0,sizeof(vis));
d[i]=0;
q.push(i);
vis[i]=1;
while(!q.empty())
{
int u=q.front(); q.pop();
for(j=0;j<G[u].size();++j)
{
int v=G[u][j];
if(!vis[v])
{
vis[v]=1;
d[v]=d[u]+1;
q.push(v);
}
}
}
nxt[i][i]=i;
for(j=1;j<=n;++j)
{
if(j==i) continue;
int mx=0,k,v;
for(k=0;k<G[j].size();++k)
{
v=G[j][k];
if(d[j]==d[v]+1&&(v<mx||!mx)) mx=v;
}
nxt[j][i]=mx;
}
}
for(i=1;i<=n;++i) G[i].pb(i);
printf("%.3f\n",f(A,B));
return 0;
}

  

最新文章

  1. (七)DAC0832 数模转换芯片的应用 以及运算放大器的学习 01
  2. SpringMvc之handler深入AbstractControllerhe和MultiActionController和内部资源视图解析器
  3. oracle procedure存储过程(pl/sql)_使用declare cursor_begin end嵌套
  4. Java集合的小抄 Java初学者必备
  5. this point
  6. ExtJs 第二章,Ext.form.Basic表单操作
  7. Shortest Path
  8. STM32串口寄存器操作(转)
  9. [模拟赛] T3 最优序列
  10. ant 脚本使用技巧
  11. java 常用工具类
  12. Burp Suite设置代理
  13. Session失效后所有Ajax请求跳转登录地址
  14. Python3 Pandas的DataFrame数据的增、删、改、查
  15. 【转】netstat 的10个基本用法
  16. robotium—只有apk文件的测试
  17. UNIX环境编程学习笔记(14)——文件I/O之临时文件
  18. AJAX乱码解决新方法
  19. 记录一下我的GDB配置
  20. django2.0模板相关设置

热门文章

  1. vm虚拟机啊安装操作
  2. Jquery中.bind()、.live()、.delegate()和.on()之间的区别详解(转)
  3. L2范数归一化概念和优势
  4. 自己用ansible加shell 写的自动安装kubernetes的脚本
  5. 今日前端框架Vue学习笔记
  6. 【转载】C#将字符串中字母全部转换为大写或者小写
  7. ubuntu安装之后需要做什么
  8. MySQL binlog反解析
  9. KVM虚拟化——简介
  10. Yum三方仓库——EPEL