计蒜客 一维坐标的移动(BFS)
在一个长度为 n 的坐标轴上,蒜头君想从 A 点 移动到 B 点。他的移动规则如下:
- 向前一步,坐标增加 1。
- 向后一步,坐标减少 1。
- 跳跃一步,使得坐标乘 2。
蒜头君不能移动到坐标小于 0 或大于 n 的位置。蒜头想知道从 A 点移动到 B 点的最少步数是多少,你能帮他计算出来么?
输入格式
第一行输入三个整数 n,A,B,分别代表坐标轴长度,起始点坐标,终点坐标。(50000≤A,B≤n≤5000)
输出格式
输出一个整数占一行,代表蒜头要走的最少步数。
样例输入
样例输出
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <string>
#include <math.h>
#include <algorithm>
#include <vector>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <sstream>
const int INF=0x3f3f3f3f;
typedef long long LL;
const int mod=1e9+;
const double PI = acos(-);
#define Bug cout<<"---------------------"<<endl
const int maxn=1e4+;
using namespace std; int vis[]; int main()
{
#ifdef DEBUG
freopen("sample.txt","r",stdin);
#endif
ios_base::sync_with_stdio(false);
cin.tie(NULL); int n,a,b;
scanf("%d %d %d",&n,&a,&b);
int ans=;
if(a>=b)
ans=a-b;
else //BFS
{
queue<pair<int,int> > qe;
vis[a]=;
qe.push(make_pair(a,));
while(!qe.empty())
{
int now=qe.front().first;
int step=qe.front().second;
qe.pop();
if(now==b)//找到了
{
ans=step;
break;
}
int to;
to=now+;//前进1步
if(to>=&&to<=n&&!vis[to])
{
vis[to]=;
qe.push(make_pair(to,step+));
}
to=now-;//后退1步
if(to>=&&to<=n&&!vis[to])
{
vis[to]=;
qe.push(make_pair(to,step+));
}
to=now*;//跳跃一步
if(to>=&&to<=n&&!vis[to])
{
vis[to]=;
qe.push(make_pair(to,step+));
} }
}
printf("%d\n",ans); return ;
}
-
计蒜客 一维坐标的移动(BFS)的更多相关文章
- 2019计蒜客信息学提高组赛前膜你赛 #2(TooYoung,TooSimple,Sometimes Naive
计蒜客\(2019CSP\)比赛第二场 巧妙爆零这场比赛(我连背包都不会了\(QWQ\) \(T1\) \(Too\) \(Young\) 大学选课真的是一件很苦恼的事呢! \(Marco\):&qu ...
- [计蒜客] 矿石采集【记搜、Tarjan缩点+期望Dp】
Online Judge:计蒜客信息学3月提高组模拟赛 Label:记搜,TarJan缩点,树状数组,期望Dp 题解 整个题目由毫无关联的两个问题组合成: part1 问题:对于每个询问的起点终点,求 ...
- 计蒜客 作弊揭发者(string的应用)
鉴于我市拥堵的交通状况,市政交管部门经过听证决定在道路两侧安置自动停车收费系统.当车辆驶入车位,系统会通过配有的摄像头拍摄车辆画面,通过识别车牌上的数字.字母序列识别车牌,通过连接车管所车辆信息数据库 ...
- 计蒜客的一道题dfs
这是我无聊时在计蒜客发现的一道题. 题意: 蒜头君有一天闲来无事和小萌一起玩游戏,游戏的内容是这样的:他们不知道从哪里找到了N根不同长度的木棍, 看谁能猜出这些木棍一共能拼出多少个不同的不等边三角形. ...
- 计蒜客模拟赛5 D2T1 成绩统计
又到了一年一度的新生入学季了,清华和北大的计算机系同学都参加了同一场开学考试(因为两校兄弟情谊深厚嘛,来一场联考还是很正常的). 不幸的是,正当老师要统计大家的成绩时,世界上的所有计算机全部瘫痪了. ...
- 计蒜客 等边三角形 dfs
题目: https://www.jisuanke.com/course/2291/182238 思路: 1.dfs(int a,int b,int c,int index)//a,b,c三条边的边长, ...
- 计蒜客 方程的解数 dfs
题目: https://www.jisuanke.com/course/2291/182237 思路: 来自:https://blog.csdn.net/qq_29980371/article/det ...
- 计蒜客 买书 dfs
题目: https://www.jisuanke.com/course/2291/182236 思路: 递归解决,从第一本书开始,每本书都有两种选择: //index是book里面每本书价格的下标, ...
- 计蒜客:Entertainment Box
Ada, Bertrand and Charles often argue over which TV shows to watch, and to avoid some of their fight ...
随机推荐
- spring的一些annotation
通过使用spring的注解可以把一些类通过spring容器管理这些类 @controller 控制器(注入服务) @service 服务(注入dao) @repository dao(实现dao访问) ...
- 让vscode使用Pipenv工作环境
1.查看Pipenv的位置 # 先激活Pipenv环境 pipenv shell # 获取当前虚拟环境的位置 pipenv --venv 2.打开setting.json配置文件 Ctrl+Shift ...
- Vulkan SDK 之 Graphics Pipeline
A graphics pipeline consists of shader stages, a pipeline layout, a render pass, and fixed-function ...
- 九十七、SAP中ALV事件之十,通过REUSE_ALV_COMMENTARY_WRITE函数来显示ALV的标题
一.SE37查看REUSE_ALV_COMMENTARY_WRITE函数 二.查看一下导入 三.我们点击SLIS_T_LISTHEADER,来看一下类型 四.我们再看一下,这个info是60长度的字符 ...
- 八、JavaScript之执行语句
一.代码如下 二.运行结果如下 <!DOCTYPE html> <html> <meta http-equiv="Content-Type" cont ...
- 111-PHP类变量之间的赋值标识为同一个对象
<?php class mao{ //定义猫类 public $age=0; //定义多个属性并初始化 public $weight=50; public $color='white'; } $ ...
- 换根dp
感觉这类问题很少?算了,还是拿出来水一下吧qwq... 首先来看一道例题:POJ3585 一句话题意:树上任意源点多汇点最大流 你看这不就是个最大流的板子题吗?我先建个图,然后跑最大流,然后,,,然后 ...
- 开发者在行动-政府侧IT需求志愿者招募令(第一弹)
京东云与AI推出了[应急资源信息发布平台],在打通物资供需的同时,各地政府及公益组织可发布疫情信息化产品开发及运维服务的IT需求,如疫情防控统计.物资供需信息收集等IT管理.需求通过评审后平台将帮助发 ...
- jQuery中:first,:first-child,first()的使用区别
ul li:first 先获取页面中所有li节点对象数组,然后返回数组中的第一个li节点对象 . :first-child 选择器选取属于其父元素的第一个子元素的所有元素. first() 返回被 ...
- 尝试用kotlin做一个app(五)
JSP后台管理系统 开发工具是IntelliJ IDEA+tomcat+mysql5.6.19+mysql-connector-java-5.1.48.jar+easyui+kindeditor 之前 ...