Vijos1675 NOI2005 聪聪和可可 记忆化搜索
简单题,结果因为理解错题意懵逼了好久……
moveTo[x][y]表示聪聪在节点x,可可在节点y时,聪聪下一步应到达哪一个节点
dp[x][y]表示聪聪在节点x,可可在节点y,且轮到可可行动时,所需时间的数学期望(可可第一次行动不计入其内)
#include <cstdio> #include <cstring> #include <algorithm> #include <vector> #include <queue> typedef std::vector<int> Vec; typedef Vec::iterator It; ; const double notVis=-1.0; Vec adj[maxN]; int N,E; int C,K; int moveTo[maxN][maxN]; void init() { ;i<maxN;i++) adj[i].clear(); memset(moveTo,,sizeof(moveTo)); } bool input() { if(scanf("%d%d",&N,&E)==EOF) return false; init(); scanf("%d%d",&C,&K); int v1,v2; ;i<=E;i++) { scanf("%d%d",&v1,&v2); adj[v1].push_back(v2); adj[v2].push_back(v1); } return true; } struct Node { int idx; int layer; Node(int i,int l):idx(i),layer(l) {} bool operator < (const Node& other) const { return this->layer > other.layer || (this->layer == other.layer && this->idx > other.idx); } }; void calcMoveTo() { std::priority_queue<Node> pq; ;t<=N;t++) { moveTo[t][t]=t; pq.push(Node(t,)); while(!pq.empty()) { Node cur=pq.top(); pq.pop(); int& v=cur.idx; for(It x=adj[v].begin();x!=adj[v].end();++x) if(!moveTo[*x][t]) { moveTo[*x][t]=v; pq.push(Node(*x,cur.layer+)); } } } } double dp[maxN][maxN]; double solve_aux(int Cpos,int Kpos) { if(dp[Cpos][Kpos]!=0.0) return dp[Cpos][Kpos]; for(It x=adj[Kpos].begin();x!=adj[Kpos].end();++x) { if(Cpos==(*x)) continue; int Cnext=Cpos; bool ok=false; ;i<= && !ok;i++) { Cnext=moveTo[Cnext][*x]; if(Cnext==(*x)) { dp[Cpos][Kpos]+=1.0; ok=true; } } if(!ok) dp[Cpos][Kpos]+=(1.0+solve_aux(Cnext,*x)); } dp[Cpos][Kpos]/=double(adj[Kpos].size()); return dp[Cpos][Kpos]; } double solve() { if(C==K) return 0.0; ;i<=;i++) { C=moveTo[C][K]; if(C==K) return 1.0; } memset(dp,,sizeof(dp)); ;i<=N;i++) adj[i].push_back(i); return 1.0+solve_aux(C,K); } int main() { while(input()) { calcMoveTo(); printf("%.3lf\n",solve()); } ; }
Vijos1675 NOI2005 聪聪和可可 记忆化搜索的更多相关文章
- BZOJ1415[Noi2005]聪聪和可可——记忆化搜索+期望dp
题目描述 输入 数据的第1行为两个整数N和E,以空格分隔,分别表示森林中的景点数和连接相邻景点的路的条数. 第2行包含两个整数C和M,以空格分隔,分别表示初始时聪聪和可可所在的景点的编号. 接下来E行 ...
- BZOJ 1415: [Noi2005]聪聪和可可(记忆化搜索+期望)
传送门 解题思路 还是比较简答的一道题.首先\(bfs\)把每个点到其他点的最短路求出来,然后再记忆化搜索.记搜的时候猫的走法是确定的,搜一下老鼠走法就行了. 代码 #include<iostr ...
- 【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]聪聪和可可 期望DP+记忆化搜索
[题意]给定无向图,聪聪和可可各自位于一点,可可每单位时间随机向周围走一步或停留,聪聪每单位时间追两步(先走),问追到可可的期望时间.n<=1000. [算法]期望DP+记忆化搜索 [题解]首先 ...
- 【bzoj1415】[Noi2005]聪聪和可可 期望记忆化搜索
题目描述 输入 数据的第1行为两个整数N和E,以空格分隔,分别表示森林中的景点数和连接相邻景点的路的条数. 第2行包含两个整数C和M,以空格分隔,分别表示初始时聪聪和可可所在的景点的编号. 接下来E行 ...
- BZOJ1415 [Noi2005]聪聪和可可 【SPFA + 期望dp记忆化搜索】
题目 输入格式 数据的第1行为两个整数N和E,以空格分隔,分别表示森林中的景点数和连接相邻景点的路的条数. 第2行包含两个整数C和M,以空格分隔,分别表示初始时聪聪和可可所在的景点的编号. 接下来E行 ...
- luogu P4206 [NOI2005]聪聪与可可 期望dp 记忆化搜索
LINK:聪聪与可可 这道题的核心是 想到如何统计答案. 如果设f[i][j]表示第i个时刻... 可以发现还需要统计位置信息 以及上一次到底被抓到没有的东西 不太好做. 两者的位置都在变化 所以需要 ...
随机推荐
- 登录MD5加盐处理
一:解决方案资源管理器截图: 二:operatorDAL.cs代码 using System; using System.Collections.Generic; using System.Linq; ...
- 这次GDC China 2015的总结与关卡设计教程的梳理
去年关卡教程总结链接:听了GDC2014关于关卡设计的讲座的总结与自己的理解 24 号去了GDC china听了讲座,没有听unity没有听VR,听了一天关卡教程,和上次的关卡教程还是有区别的,这次的 ...
- [LeetCode] Largest Rectangle in Histogram 解题思路
Given n non-negative integers representing the histogram's bar height where the width of each bar is ...
- C#添加资源的两种方式
1.粘贴到项目Properties中的Resources.resx中 base.m_bitmap = Properties.Resources.MeasuredisTool; 2.添加已有资源中的bm ...
- 找不到这个cache.properties缓存文件
Android Studio在导入第三库同步时报错: C:\Users\Administrator\.gradle\caches\2.4\scripts\asLocalRepo88_4u65z0u2 ...
- uva1393 Highways
留坑(p.339) 已填(膜汪) 每条直线至少经过两个点,我们不妨在经过的所有点中的第二个点统计它 设f[i][j]表示i * j的答案,那么显然可以用f[i][j] = f[i - 1][j] + ...
- 海思android4.4 SDK编译Latin输入法
原来的HiSTBAndroidV500R001C01SPC020\device\hisilicon\bigfish\packages\apps\HiLatinIME\Android.mk内容例如以下: ...
- Android 颜色渲染(三) Shader颜色渲染
版权声明:本文为博主原创文章,未经博主允许不得转载. 相信看过在上一篇中提到的三篇文章后,大家已经对颜色处理方面有更深的体会. 之前讲到颜色渐变的效果, 具体怎么做呢,这就需要应用颜色渲染. 首先要介 ...
- QT QObject::connect函数的学习
从Qobject(QObject.h)源码中可以看到QObject::connect的定义是这样的: static bool connect(const QObject *sender, cons ...
- spring mvc DispatcherServlet详解之二---request通过Controller获取ModelAndView过程
整个spring mvc的架构如下图所示: 上篇文件讲解了DispatcherServlet通过request获取控制器Controller的过程,现在来讲解DispatcherServletDisp ...