这题类似走迷宫,走迷宫是向四个方向进行拓展,而这道题好比是向三个方向拓展,分别是:\(x+1,x-1,x×2\)

在这里拓展的时候我写了一个函数 operation 来计算拓展后的坐标

这里判断坐标是否合法的时候我取了最大值的两倍加5,因为坐标不一定在 \(k\) 的左边,有可能超出去了再往回走,不过超出一次就行了,再超就没有意义了,那样往回走的步数更多

每个点记录两个东西,坐标以及是第几个拓展到的(时间)

注意:数组d是用来记录第几个拓展到的,所以初始化的时候是 d[n]=0;,把 \(n\) 当作是第0层往外拓展

最后返回 d[k] 就搞定了

#include <iostream>
#include <cstring>
using namespace std;
const int N = 100005;
typedef pair<int,int> PII; //当前位置及已经走了多少步
PII q[N];
int d[N];
int n,k;
int operation(int x,int i)
{
if(i==0) return x+1;
if(i==1) return x-1;
if(i==2) return x*2;
}
int bfs()
{
int hh=0,tt=0;
q[0]={n,0};
memset(d,-1,sizeof d);
d[n]=0;
while(hh<=tt)
{
PII t=q[hh++];
for(int i=0;i<3;i++)
{
int x=operation(t.first,i);
if(x>=0&&x<=200005&&d[x]==-1)
{
d[x]=d[t.first]+1;
q[++tt]={x,t.second+1};
}
}
}
return d[k];
}
int main()
{
cin>>n>>k;
cout<<bfs();
return 0;
}

nflsoj 1351 抓住奶牛的更多相关文章

  1. poj 3278 简单BFS

    题意:给定农夫和奶牛的初始位置,农夫可以当前位置+1.-1.*2三种移动方式,问最少需要多少分钟抓住奶牛 AC代码: #include<cstdio> #include<cstrin ...

  2. hdu 2717 Catch That Cow(广搜bfs)

    题目链接:http://i.cnblogs.com/EditPosts.aspx?opt=1 Catch That Cow Time Limit: 5000/2000 MS (Java/Others) ...

  3. 双向广搜 codevs 3060 抓住那头奶牛

    codevs 3060 抓住那头奶牛 USACO  时间限制: 1 s  空间限制: 16000 KB  题目等级 : 黄金 Gold   题目描述 Description 农夫约翰被告知一头逃跑奶牛 ...

  4. 3060 抓住那头奶牛 USACO

    3060 抓住那头奶牛 USACO 时间限制: 1 s 空间限制: 16000 KB 题目等级 : 黄金 Gold 题目描述 Description 农夫约翰被告知一头逃跑奶牛的位置,想要立即抓住它, ...

  5. codevs 3060 抓住那头奶牛 x

    3060 抓住那头奶牛 USACO  时间限制: 1 s  空间限制: 16000 KB  题目等级 : 黄金 Gold   题目描述 Description 农夫约翰被告知一头逃跑奶牛的位置,想要立 ...

  6. BZOJ1646: [Usaco2007 Open]Catch That Cow 抓住那只牛

    1646: [Usaco2007 Open]Catch That Cow 抓住那只牛 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 634  Solved ...

  7. 2014.6.14模拟赛【bzoj1646】[Usaco2007 Open]Catch That Cow 抓住那只牛

    Description Farmer John has been informed of the location of a fugitive cow and wants to catch her i ...

  8. BZOJ 1646: [Usaco2007 Open]Catch That Cow 抓住那只牛( BFS )

    BFS... -------------------------------------------------------------------------------------------- ...

  9. 【BZOJ】1646: [Usaco2007 Open]Catch That Cow 抓住那只牛(bfs)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1646 这一题开始想到的是dfs啊,,但是本机测样例都已经re了... 那么考虑bfs...很巧妙? ...

  10. 【题解】[Usaco2007 Open]Catch That Cow 抓住那只牛-C++

    题目DescriptionFarmer John has been informed of the location of a fugitive cow and wants to catch her ...

随机推荐

  1. 2021-04-10:给定两个可能有环也可能无环的单链表,头节点head1和head2。请实现一个函数,如果两个链表相交,请返回相交的 第一个节点。如果不相交,返回null。【要求】如果两个链表长度之和为N,时间复杂度请达到O(N),额外空间复杂度 请达到O(1)。

    2021-04-10:给定两个可能有环也可能无环的单链表,头节点head1和head2.请实现一个函数,如果两个链表相交,请返回相交的 第一个节点.如果不相交,返回null.[要求]如果两个链表长度之 ...

  2. 2021-07-17:一个不含有负数的数组可以代表一圈环形山,每个位置的值代表山的高度。比如, {3,1,2,4,5}、{4,5,3,1,2}或{1,2,4,5,3}都代表同样结构的环形山。山峰A和山

    2021-07-17:一个不含有负数的数组可以代表一圈环形山,每个位置的值代表山的高度.比如, {3,1,2,4,5}.{4,5,3,1,2}或{1,2,4,5,3}都代表同样结构的环形山.山峰A和山 ...

  3. 3 分钟利用 FastGPT 和 Laf 将 ChatGPT 接入企业微信

    原文链接:https://forum.laf.run/d/556 FastGPT 是一个超级的 ChatGPT 平台项目,功能非常强大: 集成了 ChatGPT.GPT4 和 Claude 可以使用任 ...

  4. 【HarmonyOS】元服务和APP的相互跳转、相互成就

    ​ [关键字] 卡片.跳转.加桌 [背景介绍] 随着鸿蒙生态的发展,各种类型的应用都已经可以在Harmony OS上无差异的运行,面对鸿蒙新兴元服务的兴起,各大厂家可能都在考虑一个问题:如果已经有AP ...

  5. 【python基础】if语句-条件测试

    1.初识if语句 编程时经常需要检查一系列条件,并据此决定采取什么措施.在Python中,使用if语句能够检查程序的当前状态,并据此采取相应措施. 其语法格式之一: 假设有一个学员名单的列表,想将其中 ...

  6. Flutter状态管理新的实践

    1 背景介绍 1.1 声明式ui 声明式UI其实并不是近几年的新技术,但是近几年声明式UI框架非常的火热.单说移动端,跨平台方案有:RN.Flutter.iOS原生有:SwiftUI.android原 ...

  7. [ARM 汇编]高级部分—ARM汇编编程实战—3.3.1 嵌入式系统的基本概念

    嵌入式系统是一种特殊的计算机系统,通常用于执行特定的任务.它通常包含一个或多个微处理器.存储器和外围设备.与通用计算机系统相比,嵌入式系统具有体积小.功耗低.成本低和实时性强等特点.在这一部分,我们将 ...

  8. 从零开始整SpringBoot-工具与插件

    工具 工具 名称 地址 IDEA https://www.jetbrains.com/idea/ JDK1.8 https://www.oracle.com/java/technologies/jav ...

  9. VSCode隐藏一些非必要的文件

    VSCode自动编译生成 .exe文件 很烦 所以要隐藏掉 文件,首选项,搜索 files.exclude 在后面添加 **/*.exe 即可

  10. Java protected 关键字详解

    很多介绍Java语言的书籍(包括<Java编程思想>)都对protected介绍的比较的简单,基本都是一句话,就是: 被 protected 修饰的成员对于本包和其子类可见.这种说法有点太 ...