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

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;
}

相关文章:

  • java代码性能优化
  • 什么是Docker容器?
  • 初探Linux内核:解锁Linux操作系统的基本核心的奥秘(二)
  • JavaSE:面向对象进阶之接口(Interface)
  • 基于频分复用导频的MMSE信道估计方法设计与仿真
  • kuboard自带ETCD存储满了处理方案
  • 编程技能:格式化打印01,vsprintf 函数族简介
  • (22)大文件流式处理
  • MySql--定义表存储引擎、字符集和排序规则
  • 黑森林实验室 FLUX.1Kontext:革新图像修改的 AI 力量
  • 深度学习初探:当机器开始思考(superior哥AI系列第1期)
  • SolidWorks 文件打开时电脑卡顿问题分析与解决
  • 小狼毫输入法雾凇拼音输入方案辅码由默认的部件拆字/拼音输入方案修改为五笔画方案
  • KVM 安装 Ubuntu 22
  • 【合集】Linux——31个普通信号
  • Java基础 Day25
  • 解决Acrobat印前检查功能提示无法为用户配置文件问题
  • 调试技巧总结
  • plotbunni开源程序是具有 AI 辅助的 FOSS 小说写作套件
  • @Docker Compose部署Alertmanager
  • 买了域名之后怎么做网站/怎么注册自己公司的网址
  • 建设h5网站/网络运营课程培训班
  • 网站目录权限/电话销售怎么找客户渠道
  • 免费企业网站哪个好/百度做网站推广电话
  • python做网站的好处/推广app赚钱项目
  • 外贸网站建设 如何做/常见的网站推广方法