catch that cow(简单bFS)抓牛 POJ - 3278

NOIP普及组复赛题集 问题 A: 抓牛 题目描述 牛倌被通知,他的一只牛逃逸了!所以他决定,马上出发,尽快把那只牛抓回来. 他们都站在数轴上.牛倌在N(0≤N≤100000)处,牛在K(0≤K≤100000)处.约翰有两种办法移动,步行和瞬移:步行每秒种可以让约翰从x处走到x+l或x-l处;而瞬移则可让他在1秒内从x处消失,在2x处出现.然而那只逃逸的牛,悲剧地没有发现自己的处境多么糟糕,正站在那儿一动不动.... 阅读详情

题目大意:在一个坐标轴上。有一个农夫准备追牛。可以向前,向后,也可以坐标加倍。求最少几步可以追上牛。

思路:求最短时间,应该使用bfs,使用sign标记这个点是否走过。bfs有三个方向,最后输出步数即可


#include<stdio.h>
#include<string.h>
struct node
{
    int s;
    int stage;
}queue[100005];//队列
int sign[100005];
int check(int k){//判断这个点能否走
	if(k>=0&&k<=100000&&!sign[k])
	return 1;
	return 0; 
}
int main()
{
    int n,k;
    while(scanf("%d%d",&n,&k)!=EOF)
    {
        memset(sign,0,sizeof(sign));//初始化
        int head=0,tail=1;
   	 struct node r;
    	sign[n]=1;
    queue[head].s=n;
    queue[head].stage=0;//起点
 //     printf("%d %d\n",tail,head);
    while(head<tail)
    {
        r=queue[head];
        int temp;
        temp=r.s+1; //前进一步
        if(check(temp))
        {
            queue[tail].stage=r.stage+1;
            queue[tail].s=temp;
            sign[temp]=1;
            if(queue[tail].s==k)//判断是否到达终点
             break;
             tail++;
            //   printf("%d %d\n",tail,head);
        }
       temp=r.s-1;//后退一步
        if(check(temp))
        {
            queue[tail].stage=r.stage+1;
            queue[tail].s=temp;
            sign[temp]=1;
            if(queue[tail].s==k)
            break;
			tail++;
        }
       temp=r.s*2;//步数×2
        if(check(temp))
        {
            queue[tail].stage=r.stage+1;
            queue[tail].s=temp;
            sign[temp]=1;
            if(queue[tail].s==k)
            break;
			tail++;
        } 
        head++;
    }
    int i;
    //for(i=0;i<10;i++)
        printf("%d\n",queue[tail].stage);//输出最短步数
    }
    return 0;
}


C++广度优先搜索算法之抓住那头牛(Catch that cow) 抓住那头牛: 农夫知道一头牛的位置,想要抓住它。农夫和牛都位于数轴上,农夫起始位于点N(0 1、从X移动到X-1或X+1,每次移动花费一分钟 2、从X移动到2*X,每次移动花费一分钟 假设牛没有意识到农夫的行动,站在原地不动。农夫最少要花多少时间才能抓住牛? Catch that cow: Farmer John has been informed of the location of 阅读详情

相关推荐

POJ 3278 Catch That Cow【C语言版】

我的第一道BFS题,还是按照习惯在网上搜索题解,令人郁闷的是大部分都是C++版的,用了queue库。而且可能因为这道题太水,好不容易找到的C语言版的解题报告中的注释又对新手不太友好,不是特别详细,有的讲的很齐全但是代码太难看了我拒绝看 = =。。。知道我遇到了这个人的博客,当然注释也不是很齐全,但是胜在代码啰嗦(划掉),马上就看懂了。所以我决定在他的解题报告代码的帮助下来开始我人生中第一道BFS题

weiwanshu的专栏 2081

【bfs】USACO抓牛catchcow

这题是黄巨大出的比赛题. http://poj.org/problem?id=3278 Description Farmer John has been informed of the location of a fugitive cow and wants to catch her immediately. He starts at a pointN(0 ≤N≤ 100,000...

weixin_30667649的博客 190

POJ 3278 Catch That Cow(BFS 剪枝)

题目链接:http://poj.org/problem?id=3278 这几次都是每天的第一道题都挺顺利,然后第二道题一卡一天。 = =,今天的这道题7点40就出来了,不知道第二道题在下午7点能不能出来。0 0 先说说这道题目,大意是有个农夫要抓牛,已知牛的坐标,和农夫位置。而且农夫有三种移动方式,X + 1,X - 1,X * 2,问最少几步抓到牛。 开始认为很简单的,三方向的BFS就能顺

顺便A道题 1050

Catch That Cow抓住那只奶牛(BFS,广度优先搜索)

# **Catch That Cow(抓住那只奶牛)**【题意】:农场主要去追一直逃跑的牛,每次移动有三种选择,位置加一,位置减一,位置乘二,要找到最快的方法让农夫追到牛(也就是移动的次数最少,这个过程是线性的)具体的题目请见:[原题链接:](http://poj.org/problem?id=3278)。思路: 从题目中位置移动就可以看出是一个搜索问题,又加上要找最快的方法,也就是在暗示这...

小谢的博客 1526

Ansys口腔正畸有限元分析:从几何处理到接触设定的全流程解析

本文详细解析了Ansys在口腔正畸有限元分析中的全流程应用,从几何处理到接触设定,帮助医生精准预测牙齿移动趋势。通过有限元建模技术,可同时观察牙齿-牙周膜-牙槽骨的力学响应,显著提升矫治效果预测准确率。文章还分享了实用技巧和参数设置建议,适用于正畸医生和工程师。

weixin_30897233的博客 346

weblogic 集群搭建,双机部署,相关问题记录

4.5.集群搭建1 参考网址https://wenku.baidu.com/view/76365129cd1755270722192e453610661ed95aa4.html IP地址 端口 角色 192.168.1.160 9001 AdminServer ...

zl386119974的专栏 1669

BFS:抓住那头牛(广度优先搜索入门)

POJ 3278 抓住那头牛 描述 农夫知道一头牛的位置,想要抓住它。农夫和牛都位于数轴上,农夫起始位于点N(0<=N<=100000),牛位于点K(0<=K<=100000)。农夫有两种移动方式: 从X移动到X-1或X+1,每次移动花费一分钟 从X移动到2*X,每次移动花费一分钟 假设牛没有意识到农夫的行动,站在原地不动。农夫最少要花多少时间才能抓住牛? 输入 两个整数,N和K 输出 一个整数,农夫抓到牛所要花费的最小分钟数 样例输入 5 17 样例输出 4 #incl

快乐修勾的博客 929

华东师范大学2020机试题解

1.统计卡牌的值 #include<iostream> #include<string> #include<vector> //#include<algorithm> using namespace std; int main() { int n; cin>>n; int answer=0; for(int i=0;i<n;++i) { string str; ci

qq_42254342的博客 1901

poj 3278 catch that cow

约翰希望立即抓住逃亡的牛。当前约翰在节点 N,牛在节点 K(0≤N,K≤100 000)时,他们在同一条线上。约翰有两种交通方式:步行和乘车。如果牛不知道有人在追赶自己,原地不动,那么约翰需要多长时间才能抓住牛?1.步行:约翰可以在一分钟内从任意节点 X 移动到节点 X-1 或 X+1。2.乘车:约翰可以在一分钟内从任意节点 X 移动到节点 2×X。输入:两个整数 N 和 K。输出:单行输出约翰抓住牛所需的最短时间(以分钟为单位)。输入样例5 17输出样例4。

qq_74248245的博客 644

n8n实战:动态报表生成与企业微信自动化推送

本文详细介绍了如何利用n8n实现动态报表生成与企业微信自动化推送的全流程。通过配置n8n Form触发器、智能报表生成核心逻辑以及企业微信Webhook推送,帮助企业大幅提升数据收集与报表推送效率,实现从数据录入到报表推送的全自动化处理。

weixin_29267307的博客 304

DeepSeek赋能公文写作:从高效成文到精准传情的全维度指南

摘要:AI赋能公文写作的精准化实践 公文写作长期面临框架混乱、素材匮乏、表达不规范、修改低效等痛点。DeepSeek等AI工具通过"精准指令+分步赋能"模式实现突破:首先明确公文的目的性、逻辑性和规范性特征;其次采用包含场景、类型、目的等要素的指令模板;再分四步实施:框架搭建确保层次分明,内容填充解决素材问题,表达优化适配不同语体,合规校验把关格式规范。典型案例显示,AI能将数据罗列转化为"数据+成果+价值"的生动表述,使公文既规范又具感染力。这种AI赋能的写作方法显

通俗易懂学IT 231

POJ 3278 Catch That Cow 【bfs+队列】

原题链接:http://poj.org/problem?id=3278 算法:bfs+队列+STL(C++) PS:bfs入门题目,好高兴啊,终于会用bfs了。 Catch That Cow Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 32679   Accepted:

free斩 1万+

SAP-ABAP:SAP Open SQL 分页技术深度解析:语法、性能陷阱与最佳实践

SAP Open SQL 分页技术深度解析:语法、性能陷阱与最佳实践

baidu_35680696的博客 633

POJ-3278 Catch That Cow

POJ-3278 Catch That Cow 题目链接:POJ-3278 题目大意:农夫再n这个点上找在k点的牛 农夫可以步行 可以向前走一步或者向后走一步 可以传送 传送到2*当前节点的位置上 问农夫多少步可以找到牛 解题思路:BFS 以为贼简单的那种 然后就错了两次 第一次内存超限 肯定是queue爆掉了 然后我就把queue提升到方法外边了 还是超限 然后试了试1 100000这组数据 ...

鱼头的水题之路 443

【WRF安装】WRF环境配置移植详细说明

【WRF安装】WRF环境配置移植详细说明

WW、forever的博客 819

【个人成长笔记】在Ubuntu中安装RTL8188GU USB无线网卡驱动(Driver for Linux RTL8188GU)

这篇笔记提供了在Ubuntu系统中安装RTL8188GU无线网卡驱动的完整指南。主要内容包括:驱动程序的官方来源(Github链接)、详细安装步骤(通过git下载、编译安装等命令),以及将设备转换为USB网卡模式的关键指令。特别提醒每次开机都需要执行模式转换命令,因为设备默认会以U盘模式启动。文章以简洁的技术文档形式呈现,适合Linux用户快速查阅和操作。

yuhuasheng1997的博客 1822

POJ 3278 Catch That Cow

POJ 3278 Catch That Cow 题目大意: 在一个一维的坐标下,FJ和Cow各自处于一个坐标点,Cow不动,然后问FJ追上Cow的最少时间 FJ可向前走一步,耗时一分钟 FJ可向后走一步,耗时一分钟 FJ可走到当前坐标的两倍处,耗时一分钟(坐标均为正数) 具体思路: 分两种情况,若FJ在Cow的前方,那么他只能一步一步往后走,耗时N-K 若FJ在Cow后方,则BFS搜索 #in...

指弹键盘哼民谣 613

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

POJ3278---Catch That Cow

POJ3278—Catch That Cow 题目描述 农夫约翰已被告知逃亡牛的位置,并希望立即抓住她。他开始于一个点N(0≤ N≤100,000)和牛是在点K (0≤ K≤100,000),他们在同一条线上。农夫约翰有两种交通方式:步行和乘车。 行走:约翰可以在一分钟内从任意点X移动到X -1或X + 1 点 乘车:约翰可以在一分钟内从任意点X移动到点2× X . 如果母牛不知道它的追赶,根本不动,那么农夫约翰需要多长时间才能找回它? 输入 第1行:两个以空格分隔的整数:N和K 输出 第1行:农夫约翰用最

LXYDSF的博客 1613

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【POJ 3278 --- Catch That Cow】队列 || bfs

【POJ 3278 --- Catch That Cow】队列 || bfs 题目来源:点击进入【POJ 3278 — Catch That Cow】 Description Farmer John has been informed of the location of a fugitive cow and wants to catch her immediately. He starts at...

来日浅谈的博客 575

POJ 3278 Catch That Cow(BFS)

POJ 3278 Catch That Cow(BFS) Farmer John has been informed of the location of a fugitive cow and wants to catch her immediately. He starts at a pointN(0 ≤N≤ 100,000) on ...

WBA 335

[POJ 3278]Catch That Cow[BFS]

题目链接:[POJ 3278]Catch That Cow[BFS] 题意分析: 农夫每次可以向左或者向右走,或者跳跃到当前位置的两倍位置上。问:最少几次操作可以到达奶牛的K位置 解题思路: 从起点BFS即可。注意边界条件和访问标记量。 个人感受: 虽然简单,还是ME+WA。ME是因为忘记标记访问量,WA是因为边界上的2*X 具体代码如下: #include #include #i

闲停 610

Poj3278 Catch That Cow

Poj3278 Catch That Cow题意要点代码 题意 FJ抓奶牛,FJ的位置为N(0≤N≤100,000),奶牛的位置为K(0≤N≤100,000)。有三种移动方式抓奶牛:N-1/分钟,N+1/分钟,N*2/分钟。奶牛不会动,问FJ抓住奶牛至少需要多少分钟? 要点 1,这是一道简单的BFS题。 2,注意记录走过点,不然会超时。 代码 #include<stdio.h> #in...

qq_33005379的博客 220

POJ-Catch That Cow BFS+队列

原题链接:http://poj.org/problem?id=3278 算法:bfs+队列 Catch That Cow Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 32679 Accepted: 10060 Description Farmer John has been informed of the locat...

A's World 651

kuangbin 简单搜索 - POJ - 3278 Catch That Cow (简单bfs)

3.kuangbin 简单搜索 - POJ - 3278 Catch That Cow (简单bfs) 简单bfs #include<cstdio> #include<iostream> #include<cstring> #include<string> #include<cmath> #include<algorithm> #include<queue> #define IOS ios::sync_with_std

ACM-ICPC 现役(铜牌) Codeforces Rating: 2172 203
上一篇: 最大连续子序列 (dp)HDU 1231
下一篇: 棋盘问题 (dfs) POJ - 1321
practer
博客等级 码龄10年 11粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值