当前位置: 首页 > web >正文

Catch That Cow POJ - 3278

农夫约翰得知了一头逃亡奶牛的位置,想要立即抓住她。他起始于数轴上的点N(0 ≤ N ≤ 100,000),而奶牛位于同一条数轴上的点K(0 ≤ K ≤ 100,000)。农夫约翰有两种移动方式:步行和传送。

* 步行:约翰可以从任意点X在一分钟内移动到X-1或X+1的位置
* 传送:约翰可以从任意点X在一分钟内移动到2×X的位置

如果奶牛没有察觉被追踪而始终保持静止,农夫约翰需要多长时间才能抓住它?

输入

第1行:两个用空格分隔的整数:NK

输出

第1行:农夫约翰抓住逃亡奶牛所需的最短时间(以分钟为单位)

样例

InputcopyOutputcopy
5 17
4

提示

农夫约翰抓住逃亡奶牛的最快路径是:5-10-9-18-17,共耗时4分钟。

代码

#include <stdio.h>
#include <string.h>#define MAXN 100005
#define Que que[tail][0] = tx, que[tail][1] = fstep+1, vis[tx] = 1, tail++
int vis[MAXN], que[MAXN * 30][2];
int n, k;
int is(int x) {if (x >= 0 && x <= 100000 && vis[x] == 0) return 1; // 注意! x >= 0return 0;
}
int main()
{scanf("%d%d", &n, &k);int head = 0, tail = 1;memset(vis, 0, sizeof vis), memset(que, 0, sizeof que);que[0][0] = n, que[0][1] = 0, vis[n] = 1;while (head < tail){int fx = que[head][0], fstep = que[head][1], tx; head++;if (fx == k) {printf("%d", fstep); return 0;}// x - 1tx = fx - 1;if (is(tx)) Que;// x + 1tx = fx + 1;if (is(tx)) Que;// x * 2;tx = fx * 2;if (is(tx)) Que;}return 0;
}

http://www.xdnf.cn/news/10221.html

相关文章:

  • fdw批量导入外部表
  • 7.CircuitBreaker断路器
  • 【js逆向】某某省过验证码逆向
  • hantools 常用函数
  • 第二代IndoorLink头戴式无线讲解器,远距+动感,更好用了
  • 数据交易场景的数据质量评估
  • 权限分配不合理如何影响企业运营?
  • 企业数字化转型的7个难点
  • 共享签名是什么
  • 【Docker 从入门到实战全攻略(一):核心概念 + 命令详解 + 部署案例】
  • If possible, you should set the HttpOnly flag for these cookies 修复方案
  • RCU stall 异常卡住问题
  • GESP】C++一级考试大纲知识点梳理(1)
  • 深入理解 Uvicorn Workers:FastAPI 与 ASGI 应用的并发利器
  • 推荐系统排序指标:MRR、MAP和NDCG
  • 一、虚拟货币概述
  • PCIe— Legacy PCI
  • STL_stack和queue(deque priority_queue)
  • 第8讲、Odoo 18 ORM 深度解析
  • AI数字人系统开发——引领未来智能交互潮流
  • C++面试题:Linux系统信号详解
  • Postgre数据库分区生产实战
  • Obsidian 社区插件下载修复
  • 随笔20250530 C# 整合 IC卡读写技术解析与实现
  • LangChain表达式(LCEL)实操案例1
  • C++智能指针介绍和区别(std::unique_ptr、std::shared_ptr 和 std::weak_ptr)
  • 004时装购物系统技术解析:构建智能时尚消费平台
  • PRECICE 工具介绍与使用示例
  • 7.atlas安装
  • 5.30 打卡