luogu P4206 [NOI2005]聪聪与可可 期望dp 记忆化搜索
LINK:聪聪与可可
这道题的核心是 想到如何统计答案。
如果设f[i][j]表示第i个时刻... 可以发现还需要统计位置信息 以及上一次到底被抓到没有的东西 不太好做。
两者的位置都在变化 所以需要设出状态 f[i][j]表示第聪聪在i位置 可可在j位置的期望步数。
容易想到转移. i==j->0 j是i的下一步或者下下一步 期望为1.
由于聪聪的走位是固定的 所以 设其走两步的位置为 w 而可可是随机的 所以只需要枚举一下可可的转移即可。
由于状态的无序转移性 所以需要记忆化搜索。非常有趣。
值得一提的是 预处理j的下一步位置 需要使用迪杰斯特拉 这样复杂度是n^2log的。
const int MAXN=1010;
int n,m,len,S,T;
db f[MAXN][MAXN];
int ne[MAXN][MAXN],a[MAXN][MAXN];
int dis[MAXN],vis[MAXN],du[MAXN],mark[MAXN][MAXN];
int lin[MAXN],ver[MAXN<<1],nex[MAXN<<1];
priority_queue<pii>q;
inline void add(int x,int y)
{
ver[++len]=y;
nex[len]=lin[x];
lin[x]=len;
++du[y];
}
inline db dfs(int x,int y)
{
if(mark[x][y])return f[x][y];
mark[x][y]=1;
if(x==y)return f[x][y]=0;
if(ne[x][y]==y||ne[ne[x][y]][y]==y)return f[x][y]=1;
int w=ne[ne[x][y]][y];
++f[x][y];
go(y)f[x][y]+=1.0/du[y]*dfs(w,tn);
f[x][y]+=1.0/du[y]*dfs(w,y);
return f[x][y];
}
inline void dij(int s)
{
for(int i=1;i<=n;++i)dis[i]=INF;
q.push(mk(0,s));
dis[s]=0;
while(q.size())
{
int x=q.top().S;
q.pop();
if(vis[x])continue;
vis[x]=1;
for(int i=lin[x];i;i=nex[i])
{
int tn=ver[i];
if(dis[tn]>dis[x]+1)
{
dis[tn]=dis[x]+1;
q.push(mk(-dis[tn],tn));
}
}
}
}
int main()
{
freopen("1.in","r",stdin);
get(n);get(m);
get(S);get(T);
rep(1,m,i)
{
int x,y;
get(x);get(y);
add(x,y);add(y,x);
}
rep(1,n,i)
{
dij(i);++du[i];
rep(1,n,j)a[i][j]=dis[j],vis[j]=0;
}
rep(1,n,i)rep(1,n,j)
{
int maxx=INF,p=0;
for(int k=lin[i];k;k=nex[k])
{
int tn=ver[k];
if(a[j][tn]==maxx)p=min(p,tn);
if(a[j][tn]<maxx)maxx=a[j][tn],p=tn;
}
ne[i][j]=p;
}
printf("%.3lf",dfs(S,T));
return 0;
}
luogu P4206 [NOI2005]聪聪与可可 期望dp 记忆化搜索的更多相关文章
- 【BZOJ】1415 [Noi2005]聪聪和可可 期望DP+记忆化搜索
[题意]给定无向图,聪聪和可可各自位于一点,可可每单位时间随机向周围走一步或停留,聪聪每单位时间追两步(先走),问追到可可的期望时间.n<=1000. [算法]期望DP+记忆化搜索 [题解]首先 ...
- bzoj 1415: [Noi2005]聪聪和可可 期望dp+记忆化搜索
期望dp水题~ 你发现每一次肯定是贪心走 2 步,(只走一步的话就可能出现环) 然后令 $f[i][j]$ 表示聪在 $i$,可在 $j$,且聪先手两个人碰上面的期望最小次数. 用记忆化搜索转移就行了 ...
- 洛谷4206/NOI2005T4 聪聪和可可 期望DP+记忆化搜索
题意:给出n个点m条边的无向图,两个主角聪聪和可可开始分别在S点和T点.聪聪想吃掉可可,每次由匆匆先行动后来可可行动.聪聪的行动是选他到可可的最短路上的点走最多两步(如果最短路有几条就选编号最小的走) ...
- BZOJ1415 [Noi2005]聪聪和可可 【SPFA + 期望dp记忆化搜索】
题目 输入格式 数据的第1行为两个整数N和E,以空格分隔,分别表示森林中的景点数和连接相邻景点的路的条数. 第2行包含两个整数C和M,以空格分隔,分别表示初始时聪聪和可可所在的景点的编号. 接下来E行 ...
- [CH3803] 扑克牌 (期望DP+记忆化搜索)
[题目链接] [CH3803] 扑克牌 [题面描述] \(54\)张牌,每次随机摸一张,求得到 A张黑桃 B张红桃 C张梅花 D张方块 的期望步数.特别地,大王和小王可以当做任意一种花色,当然,会选择 ...
- bzoj 1415 期望dp + 记忆化搜索
思路:这个题看着感觉不能dp,其实是可以dp的,因为狼每次走两步,兔子每次走一步,每进行一轮以后,狼和兔子的距离 肯定是在接近的,没有相同的状态,dp之前预处理出来,每一步狼该往哪里走. #inclu ...
- 【BZOJ 1415】 1415: [Noi2005]聪聪和可可 (bfs+记忆化搜索+期望)
1415: [Noi2005]聪聪和可可 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1640 Solved: 962 Description I ...
- luogu P2657 [SCOI2009]windy数 数位dp 记忆化搜索
题目链接 luogu P2657 [SCOI2009]windy数 题解 我有了一种所有数位dp都能用记忆话搜索水的错觉 代码 #include<cstdio> #include<a ...
- TSP+期望——lightoj1287记忆化搜索,好题!
感觉是很经典的题 记忆化时因为不好直接通过E判断某个状态是否已经求过,所以再加一个vis打标记即可 /*E[S][u]表示从u出发当前状态是S的期望*/ #include<bits/stdc++ ...
随机推荐
- 基于 React 开发了一个 Markdown 文档站点生成工具
Create React Doc 是一个使用 React 的 markdown 文档站点生成工具.就像 create-react-app 一样,开发者可以使用 Create React Doc 来开发 ...
- day62 作业
熟练使用无名有名分组 urls.py url(r'^edit/(\d+)/',views.edit_user,name='edit'), views.py def edit_user(request, ...
- day12 文件操作(下)
目录 一.x模式(控制文件操作模式,与rwa同级) 1 特点 2 格式 二.b模式(控制文件读写内容的模式,与t同级) 1.b模式和t模式的区别 2 b模式应用 3 循环读取文件 三.文件操作的其他方 ...
- 本地缓存解决方案-Caffeine Cache
1.1 关于Caffeine Cache Google Guava Cache是一种非常优秀本地缓存解决方案,提供了基于容量,时间和引用的缓存回收方式.基于容量的方式内部实现采用LRU算法,基于引 ...
- Mysql基础(六):索引、数据库备份、锁和事务、慢查询优化、索引命中相关
目录 数据库05 /索引.数据库备份.锁和事务.慢查询优化.索引命中相关 1. 什么是索引 2. 索引的原理 3. 索引的数据结构(聚集索引.辅助索引) 4. 索引操作 5. 索引的两大类型hash与 ...
- 数据可视化之powerBI技巧(十九)DAX作图技巧:使用度量值动态分组和配色
有了前两篇关于分组的铺垫,这篇文章就来学习一个分组的经典应用,图表的动态分组,并对分组动态配色. 假设有十几个产品,每个产品的销售额,是随着时间而变化的,想知道某个时间的每一个产品的销售额与平均销售额 ...
- “git pull” 强制覆盖本地文件
放弃本地修改,使用服务器代码覆盖本地的Git命令如下: $ git fetch --all $ git reset --hard origin/master $ git pull 使用master分支 ...
- Apache Tomcat目录结构与版本升级
升级原因: 由于当前操作系统内的tomcat版本过低,存在大量高中危漏洞,存在一定的安全隐患.如下图所示,使用绿盟扫描器进行扫描爆出大量漏洞. 升级思路: 既然决定要升级,那么我觉得首先要做的就是自己 ...
- 【Nginx】图片显示过慢,文件下载不完全,竟然是Nginx的锅!!
写在前面 最近,一名读者跟我说他通过浏览器访问自己的服务器时,图片显示的非常慢,以至于在浏览器中都无法完全加载出来,下载文件时,更是恼火,文件根本就无法完全下载下来.而且奇怪的是这位读者所在的网络是没 ...
- 笨办法学Python 3|百度网盘免费下载|新手基础入门书籍
点击下方即可百度网盘免费提取 百度网盘免费下载:笨办法学Python 3 提取码:to27 内容简介: 本书是一本Python入门书,适合对计算机了解不多,没有学过编程,但对编程感兴趣的读者学习使用. ...