当前位置:网站首页>抓住那头牛(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;
}
边栏推荐
猜你喜欢
Platts Analysis-MATLAB Toolbox Function
投资组合分析:portfolio_analysis.Tangenvy_portfolio(切点组合)
【FreeRTOS】12 任务通知——更省资源的同步方式
Unreal回放系统剖析(上)
Anatomy of Unreal Playback System (Part 1)
ADSP21489仿真:Failed to set breakpoint: Can‘t set breakpoints in the current state: Running
jetracer_pro_2GB AI Kit system installation instructions
洛谷P2437蜜蜂路线
ADSP21489工程中LDF文件配置详解
学内核之五:问题一,关于上下文切换
随机推荐
Visual SLAM Lecture Fourteen - Lecture 13 Practice: Designing a SLAM system (the most detailed code debugging and running steps)
C - The Domino Effect(dfs+回溯)
多主复制下处理写冲突(3)-收敛至一致的状态及自定义冲突解决逻辑
【C语言程序】求直角三角形边长
AFMG SysTune1.3.7使用图解
batch_size of deep learning foundation
分布式系统的一致性与共识(1)-综述
数据复制系统设计(3)-配置新的从节点及故障切换
2022 Huawei Software Elite Challenge (Preliminary) - Summary
力扣练习——单词搜索
gergovia的交易tijie
我们擅长的地方很多
复制延迟案例(1)-最终一致性
ROS visualization of 3D target detection
Qt处理传输协议数据时QByteArray添加多字节的使用案例
安装部署 Kubernetes 仪表板(Dashboard)
ClickHouse的客户端命令行参数
HyperLynx中层叠设计实例
复制延迟案例(4)-一致前缀读
gergovia's deal tijie