bfs(太空电梯)
http://oj.jxust.edu.cn/contest/problem?id=1563&pid=4
题目描述
公元9012年,Q博士发明了一部太空电梯,与一般电梯不同,太空电梯不能直接到达目点。太空电梯只有上升和下降两个按键,如果电梯上升,
它只能上升当前高度的距离;如果下降,它一次只能下降1米的距离。
为了使大家都能上太空去玩耍,Q博士想请你根据电梯的工作原理,计算到达目的点最少需要按几次按键
输入
多组输入
每组输入有两个数n和m(1<=n,m<=10^7),表示当前高度n和目的点m
输出
输出计算结果
样例输入
4 6
10 1
255 999999
样例输出
2
9
28
题意:电梯有两个按钮 , 一个是上升目前高度的按钮 , 另一个是下降1个高度的按钮。
如何从起始高度到达目标高度并要求求出按最少次按钮的次数。 我一开始想的是用dfs,我就去看了下分别在什么情况下使用dfs和bfs。
dfs特点:可以不重不漏的枚举所有可以到达目标状态的路径。(回溯思想 , 枚举思想) bfs特点:效率较高,适合于找一条最快到达目标状态的路径。(发散思想)
//#include <bits/stdc++.h>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <iostream>
#include <algorithm>
#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <stdio.h>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <string.h>
#include <vector>
#define ME(x , y) memset(x , y , sizeof(x))
#define SF(n) scanf("%d" , &n)
#define rep(i , n) for(int i = 0 ; i < n ; i ++)
#define INF 0x3f3f3f3f
#define mod 1000000007
using namespace std;
typedef long long ll ;
int n , m ;
int vis[] , ans[]; int bfs()
{
queue<int>q;
vis[n] = ;
q.push(n);
if(m % == )
{
m++ ;
ans[m]++;
}
while(!q.empty())
{
int x = q.front();
q.pop();
if(x == m)
{
return ans[m];
}
if(x* <= m && !vis[x*])
{
vis[*x] = ;
ans[*x] += ans[x] + ;
q.push(*x);
}
if(x - > && !vis[x-])
{
vis[x-] = ;
ans[x-] += ans[x] + ;
q.push(x-);
}
}
}
int main()
{
while(~scanf("%d%d" , &n ,&m))
{
memset(ans, , sizeof(ans));
memset(vis , , sizeof(vis));
if(n < m)
cout << bfs() << endl ;
else
{
cout << n - m << endl ;
}
} return ;
}
刷题后感:标记查找过的点是bfs 和 dfs 的重要部分。
bfs(太空电梯)的更多相关文章
- 图的遍历(搜索)算法(深度优先算法DFS和广度优先算法BFS)
图的遍历的定义: 从图的某个顶点出发访问遍图中所有顶点,且每个顶点仅被访问一次.(连通图与非连通图) 深度优先遍历(DFS): 1.访问指定的起始顶点: 2.若当前访问的顶点的邻接顶点有未被访问的,则 ...
- 【BZOJ-1656】The Grove 树木 BFS + 射线法
1656: [Usaco2006 Jan] The Grove 树木 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 186 Solved: 118[Su ...
- POJ 3278 Catch That Cow(bfs)
传送门 Catch That Cow Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 80273 Accepted: 25 ...
- POJ 2251 Dungeon Master(3D迷宫 bfs)
传送门 Dungeon Master Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 28416 Accepted: 11 ...
- Sicily 1215: 脱离地牢(BFS)
这道题按照题意直接BFS即可,主要要注意题意中的相遇是指两种情况:一种是同时到达同一格子,另一种是在移动时相遇,如Paris在(1,2),而Helen在(1,2),若下一步Paris到达(1,1),而 ...
- Sicily 1048: Inverso(BFS)
题意是给出一个3*3的黑白网格,每点击其中一格就会使某些格子的颜色发生转变,求达到目标状态网格的操作.可用BFS搜索解答,用vector储存每次的操作 #include<bits/stdc++. ...
- Sicily 1444: Prime Path(BFS)
题意为给出两个四位素数A.B,每次只能对A的某一位数字进行修改,使它成为另一个四位的素数,问最少经过多少操作,能使A变到B.可以直接进行BFS搜索 #include<bits/stdc++.h& ...
- Sicily 1051: 魔板(BFS+排重)
相对1150题来说,这道题的N可能超过10,所以需要进行排重,即相同状态的魔板不要重复压倒队列里,这里我用map储存操作过的状态,也可以用康托编码来储存状态,这样时间缩短为0.03秒.关于康托展开可以 ...
- Sicily 1150: 简单魔板(BFS)
此题可以使用BFS进行解答,使用8位的十进制数来储存魔板的状态,用BFS进行搜索即可 #include <bits/stdc++.h> using namespace std; int o ...
随机推荐
- 初学 Nginx (一) SSI 的作用
SSI:Server Side Include,是一种基于服务端的网页制作技术, Nginx ssi 的例子如下: It took a little while to figure this out ...
- MySQL:如何选取Table中的50到100行
MySQL:如何选取Table中的50到100行 使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,MySql已 经为我们提供了这样一个功能. ? 1 2 [sql] ...
- leetcode题目4.寻找两个有序数组的中位数(困难)
题目描述: 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 你可以假设 nums1 和 ...
- SRS之监听端口的管理:RTMP
1. 监听端口管理的入口函数 监听端口的管理入口在 run_master 函数中,如下: int run_master() { ... if ((ret = _srs_server->liste ...
- ArrayList && HashMap扩容策略
ArrayList扩容策略:默认10 扩容时是base + base/2, 即10 15 22 33 49...扩容时不安全:grow方法扩容时,赋值 elementData = Arrays.cop ...
- js的window.onscroll事件兼容各大浏览器
为窗口添加滚动条事件其实非常的简单, window.onscroll=function(){}; 注意在获取滚动条距离的时候 谷歌不识别document.documentElement.scrollT ...
- web搜索框的制作(必应)
搜索框中我们输入一些字或者字母,为何下面就会有一些自动补齐的相关搜索,比如我在搜索输入框中输入一个字母e,下面就会出现饿了么,e租宝,ems等相关的搜索链接.然后经过百度,发现原来很多厂商的服务器早已 ...
- Ceph 的用户管理与认证
目录 文章目录 目录 前言 Ceph 的用户管理 用户管理常规操作 CephX 认证系统 身份认证原理 使用 ceph-authtool 进行密钥环管理 注意事项 前言 常规的身份认证系统无非三点: ...
- c++ qsort函数应用
C++ qsort在"iostream" c在头文件stdlib.h中,strcmp在string.h中.下列例子默认从小到大排序即(a>b返回>0),反之从小到大排序 ...
- 解决 JDK1.7 不支持 VCenter 6.7 的问题(涉及到Https TLS1.2协议)
解决 JDK1.7 不支持 VCenter 6.7 的问题 问题描述 原项目工程是使用JDK 1.7,可以连接 5.X版本和 6.0版本的 VCenter资源池. 但是,现在VCenter已经升到 6 ...