基础宽搜 奶牛最少步数问题
来源:互联网 发布:安卓手机plc编程软件 编辑:程序博客网 时间:2024/06/01 20:11
I - Catch That Cow
Farmer John has been informed of the location of a fugitive cow and wants to catch her immediately. He starts at a pointN (0 ≤N ≤ 100,000) on a number line and the cow is at a pointK (0 ≤ K ≤ 100,000) on the same number line. Farmer John has two modes of transportation: walking and teleporting.
* Walking: FJ can move from any point X to the points X - 1 orX+ 1 in a single minute
* Teleporting: FJ can move from any point X to the point 2 × X in a single minute.
If the cow, unaware of its pursuit, does not move at all, how long does it take for Farmer John to retrieve it?
Line 1: Two space-separated integers: N andK
Line 1: The least amount of time, in minutes, it takes for Farmer John to catch the fugitive cow.
5 17
4
The fastest way for Farmer John to reach the fugitive cow is to move along the following path: 5-10-9-18-17, which takes 4 minutes.
#include <cstdio>#include <cstdlib>#include <cmath>#include <algorithm>#include <iostream>#include <cstring>#include <vector>#include <queue>#include <stack>#include <set>#include <map>#define LL long long#define INF 0x3f3f3f3f#define mem(a, b) memset(a, b, sizeof(a))#define PI 3.1415926using namespace std;const int N = 199999;using namespace std;int vis[N], d[N];queue<int> que;int bfs(int n, int k){ d[n] = 0; vis[n] = 1; que.push(n); while(!que.empty()) { int p = que.front(); que.pop(); if(p == k) { return d[k]; } if(2 * p < N && !vis[2 * p]) { vis[2 * p] = 1; d[2 * p] = d[p] + 1; que.push(2 * p); } if(p - 1 >= 0 && !vis[p - 1]) { vis[p - 1] = 1; d[p - 1] = d[p] + 1; que.push(p - 1); } if(p + 1 < N && !vis[p + 1]) { vis[p + 1] = 1; d[p + 1] = d[p] + 1; que.push(p + 1); } }}int main(){ int n, k; while(scanf("%d%d", &n, &k) != EOF) { memset(vis, 0, sizeof(vis)); memset(d, -1, sizeof(d)); while(!que.empty()) que.pop(); printf("%d\n", bfs(n, k)); } return 0;}
阅读全文
0 0
- 基础宽搜 奶牛最少步数问题
- 基础宽搜 迷宫最少步数问题
- 最少步数(迷宫问题类型)
- NYOJ 58 最少步数问题
- 问题 B: 最少的步数 【BFS】
- 问题 N: 最少的步数
- NYOJ58 最少步数 【深搜】+【广搜】
- 最少步数(广搜)
- 最少步数(简单广搜)
- 最少步数
- 最少步数
- NYOJ 最少步数
- nyoj58 最少步数
- NYOJ58-最少步数
- 最少步数
- 最少步数
- 58 最少步数
- nyoj58最少步数
- java.io.StreamCorruptedException: invalid type code: AC问题解决
- Hadoop2.7.3 mapreduce(二)类型匹配异常解决方案及源码分析
- 实用Jmeter录制复杂web测试脚本
- IdentityHashMap
- hdu 4717
- 基础宽搜 奶牛最少步数问题
- MFC消息映射机制概述(二)
- python递归实现汉诺塔实现
- java设计模式1(转自:http://blog.csdn.NET/zhangerqing)
- pro JPA2 精通java持久化API 第四章
- SSL认证原理
- 阶乘之和
- FZU—2150 Fire Game
- 安联支付-专业的第三方支付