NOI2005 聪聪和可可
Sol
记忆化搜索.
\(f[u][v]\) 表示聪聪在 \(u\) ,可可在 \(v\) ,聪聪抓到可可的期望.
预处理出 \(u\) 到 \(v\) 最短路径编号最小的点,记为 \(g[u][v]\) .
点 \(u\) 的度数记为 \(du[u]\) .
显然递归出口就是
\(u==v\) 那么此时 \(f[u][v]=0\) 已经在同一个点了,不会再互相伤害了.
\(p[u][v]=v\) 或者 \(p[p[u][v],v]=v\) 那么就互相伤害吧! \(f[u][v]=1\)
对于其他情况
\(f[u][v]=(\frac{1}{du[v]+1} \sum_{k=1}^{du[i]} f[g[g[u][v]][v],p]+f[g[g[u][v]][v],v])+1,p\in Edge(v,p)\)
Code
- #include<cstdio>
- #include<cstring>
- #include<vector>
- #include<queue>
- #include<iostream>
- using namespace std;
- #define N 1005
- inline int in(int x=0,char ch=getchar()){ while(ch>'9'||ch<'0') ch=getchar();
- while(ch>='0'&&ch<='9') x=(x<<3)+(x<<1)+ch-'0',ch=getchar();return x; }
- int n,m,s,t;int d[N],pre[N],p[N][N],du[N];bool b[N],vis[N][N];
- double f[N][N];vector<int> g[N];
- void SPFA(int S){
- queue<int> q;memset(d,0x3f,sizeof(d));memset(b,0,sizeof(b));
- d[S]=0,q.push(S),b[S]=1;
- for(int u,v;!q.empty();){
- u=q.front(),q.pop();
- for(int i=0;i<du[u];i++){
- if(d[v=g[u][i]]>d[u]+1||(d[v]==d[u]+1&&u<pre[v])){
- d[v]=d[u]+1,pre[v]=u;if(!b[v]) q.push(v),b[v]=1;
- }
- }b[u]=0;
- }for(int i=1;i<=n;i++) if(i!=S) p[i][S]=pre[i];
- }
- double DFS(int u,int v){
- if(u==v) return f[u][v]=0;if(p[u][v]==v) return f[u][v]=1;if(p[p[u][v]][v]==v) return f[u][v]=1;
- if(f[u][v]>1e-9) return f[u][v];f[u][v]=1;int nxt=p[p[u][v]][v];
- for(int i=0;i<du[v];i++){
- f[u][v]+=DFS(nxt,g[v][i])/(du[v]+1);
- }f[u][v]+=DFS(nxt,v)/(du[v]+1);return f[u][v];
- }
- int main(){
- n=in(),m=in(),s=in(),t=in();
- for(int i=1,u,v;i<=m;i++)
- du[u=in()]++,du[v=in()]++,g[u].push_back(v),g[v].push_back(u);
- for(int i=1;i<=n;i++) SPFA(i);
- return printf("%.3lf\n",DFS(s,t)),0;
- }
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 (题目链接) 题意 一张图,聪聪想吃可可.每单位时间聪聪可以先移动两次:可可后移动一次或停在原 ...
随机推荐
- Tomcat 用户访问控制
要设置Tomcat下的Host都有哪些ip能访问,可以在conf/server.xml的相应Host元素内加Value标签,示例: <Valve className="org.apac ...
- PHP 弹出文件下载
/** * @author default7<default7@zbphp.com> * @description 演示PHP弹出下载的原理 * * @param $file_name * ...
- Java学习笔记2
package welcome; public class Constants { public static void main(String[] args){ final double CM_PE ...
- C++/Python 混合编程 Clion IDE 搭建
1.Clion IDE 环境 2.TdmGcc C++ 编译器 3.WinPython Python 科学计算环境 4.MySQL SQL 数据库 5.Git GitHub 版本控制 插件
- jQM基本代码
<div data-role="page"> <div data-role="header" data-position="fixe ...
- jquery mobile 图片自适应问题
解决办法: 加入一段css <link rel="stylesheet" href="http://jquerymobile.com/demos/1.1.0/doc ...
- 分享一个控制JS 浏览器缓存的解决办法。
JS 缓存的问题一直都是我们又爱又恨的东西.也是我们比较头痛的问题, 一方面为了提高网站响应速度,减少服务器的负担,和节省带宽,将需要将静态资源缓存在客户端, 但是另一方面,当js 文件有改动的时候 ...
- osharp3使用经验:整合DbContextScope 文章 1
osharp3的事务处理是跳过savechangeing方法来控制的,没有DbContextScope专业 DbContextScope管理dbcontext的优劣本文不讨论 整合过程: 1.在.Da ...
- iOS 在UILabel显示不同的字体和颜色(转)
转自:http://my.oschina.net/CarlHuang/blog/138363 在项目开发中,我们经常会遇到在这样一种情形:在一个UILabel 使用不同的颜色或不同的字体来体现字符串, ...
- Orchard源码分析(5.2):BeginRequest事件处理(DefaultOrchardHost.BeginRequest方法)
BeginRequest事件处理的作用是确保所有Shell已经加载,或者在扩展有变化的时候重新加载. void IOrchardHost .BeginRequest() { ...