当前位置:网站首页>抓住那头牛(DAY 96)
抓住那头牛(DAY 96)
2022-08-02 04:22:00 【张学恒】
1:题目
农夫知道一头牛的位置,想要抓住它。
农夫和牛都位于数轴上,农夫起始位于点 N,牛位于点 K。
农夫有两种移动方式:
从 X 移动到 X−1 或 X+1,每次移动花费一分钟
从 X 移动到 2∗X,每次移动花费一分钟
假设牛没有意识到农夫的行动,站在原地不动。
农夫最少要花多少时间才能抓住牛?
输入格式
共一行,包含两个整数N和K。
输出格式
输出一个整数,表示抓到牛所花费的最少时间。
数据范围
0≤N,K≤105
输入样例:
5 17
输出样例:
4
2:代码实现
#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;
int n, k;
int path[N];
queue<int> q;
int op(int n, int t) {
if (t == 1) return n - 1;
if (t == 2) return n + 1;
if (t == 3) return n * 2;
}
int bfs(int n, int k) {
memset(path, 0, sizeof (path));
q.push(n);
path[n] == 0;
while (q.size()) {
auto t = q.front(); q.pop();
for (int i = 1; i <= 3; i++) {
int result = op(t, i);
if (result >= 0 && result <= k + 1 && path[result] == 0)
{
path[result] = path[t] + 1;
if (result == k) return path[result];
q.push(result);
}
}
}
return -1;
}
int main() {
cin >> n >> k;
if (n >= k)
{
cout << n - k;
return 0;
}
cout << bfs(n, k) << endl;
return 0;
}
边栏推荐
猜你喜欢
随机推荐
2022-08-01:以下go语言代码输出什么?A:panic;B:5;C:6;D:编译错误。 package main import ( “fmt“ ) func main() {
【Interview】Recruitment requirements
立方体卫星Light-1
七月阅读:《刘慈欣科幻短篇小说集Ⅰ》笔记
JDBC再回顾
多主复制下处理写冲突(4)-多主复制拓扑
【STM32】 ADC模数转换
洛谷P2437蜜蜂路线
Sentinel熔断之非控制台方式总结
面试官:大量请求 Redis 不存在的数据,从而打倒数据库,有什么方案?
lvm扩容(实战无废话)
STM32 OLED显示屏--SPI通信知识汇总
Research Notes (6) Indoor Path Planning Method Based on Environment Perception
C - The Domino Effect(dfs+回溯)
高等数学(第七版)同济大学 总习题三(后10题) 个人解答
WordPress是什么?我也想用 WordPress~
其他重要协议(DNS,ICMP,NAT,交换机)
UI自动化测试框架搭建——标记性能较差用例
自定义一个下划线分词器
STM32 OLED显示屏









