`

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 a point N (0 ≤ N ≤ 100,000) on a number line and the cow is at a point K (0 ≤ K ≤ 100,000) on the same number line. Farmer John has two modes of transportation: walking and teleporting.

* Walking: FJ can move from any point X to the points X - 1 or X + 1 in a single minute
* Teleporting: FJ can move from any point X to the point 2 × X in a single minute.

If the cow, unaware of its pursuit, does not move at all, how long does it take for Farmer John to retrieve it?

Input

Line 1: Two space-separated integers: N and K

Output

Line 1: The least amount of time, in minutes, it takes for Farmer John to catch the fugitive cow.

Sample Input

5 17

Sample Output

4

Hint

The fastest way for Farmer John to reach the fugitive cow is to move along the following path: 5-10-9-18-17, which takes 4 minutes.
#include"iostream"
#include"queue"

using namespace std;

#define MAX 100000

int dis[MAX + 1];
bool check[MAX + 1];

int catch_Cow(int n, int k) {
	int c;
	queue<int> q;
	q.push(n);
	dis[n] = 0;
	check[n] = 1;
	while(!q.empty()) {
		c = q.front();
		q.pop();
		if(c - 1 >= 0 && c - 1 < MAX + 1 && !check[c - 1]) {
			check[c - 1] = 1;
			dis[c - 1] = dis[c] + 1;
			q.push(c - 1);
		}
		if(c + 1 >= 0 && c + 1 < MAX + 1 && !check[c + 1]) {
			check[c + 1] = 1;
			dis[c + 1] = dis[c] + 1;
			q.push(c + 1);
		}
		if(c * 2 >= 0 && c * 2 < MAX + 1 && !check[c * 2]) {
			check[c * 2] = 1;
			dis[c * 2] = dis[c] + 1;
			q.push(c * 2);
		}
		if(c == k) 
			return dis[c];
	}
	return 0;
}

int main() {
	int john_n, cow_k;
	while (cin>>john_n>>cow_k) {
		memset(check,0,sizeof(check));
		memset(dis,0,sizeof(dis));
		cout<<catch_Cow(john_n, cow_k)<<endl<<endl;
	}
	return 0;
}
 
0
0
分享到:
评论

相关推荐

    AndroidPhotoView

    compile 'com.github.chrisbanes:PhotoView:1.2.6' } Sample Usage There is a sample provided which shows how to use the library in a more advanced way, but for completeness here is all that is required...

    数据库工具类DatabaseUtil.java

    package com.hexiang.utils; import java.sql.*; import java.util.*; /** * * Title: 数据库工具类 * * * Description: 将大部分的数据库操作放入这个类中, 包括数据库连接的建立, 自动释放等. * * ...

    Swift.3.Protocol-Oriented.Programming.2nd.Edition.epub

    Error handling with do-try-catch block Delve into Generics and Generic programming Implement several design patterns in a protocol-oriented way How to design applications by prioritizing the protocol ...

    salesforce dev 501 Notes

    - **Assertions**: Using assertions to check the expected outcome of operations helps catch errors early in the development process. - **Isolation**: Tests should run in isolation from each other to ...

    Sending Email using MAPI - A COM DLL(sending email demo and soucecode)

    For that I developed a COM service that used MAPI. MAPI, i.e. Messaging Application Programming Interface, is the standard messaging architecture and a complete set of functions and object-oriented ...

    CodeRush with Refactor! Pro 2.5.1

    With CodeRush, you will be able to instantly place selected code inside Try/Catch blocks, Regions and your own custom wrappers with ease. You can even reverse the logic of selected code and revisit ...

    CSharp 3.0 With the .NET Framework 3.5 Unleashed(english)

    - **Exception Handler Syntax**: This section covers the syntax for handling exceptions, including the use of `try`, `catch`, and `finally` blocks. - **Handling Exceptions**: This topic discusses best ...

    一个跨平台的CString源码

    // this helped me catch a bug in ssicoll that would prevent // compilation, otherwise. // // 2003-MAR-14 - Thanks to Jakko Van Hunen for pointing out a copy-and-paste // bug in one of the ...

    DOSCommand-102Tokyo_cheese9ca_DOSCommand-102Tokyo_DOSCommand_mem

    102TokyoTurboPack DOSCommand component let you execute a dos program (exe com or batch file) and catchthe ouput in order to put it in a memo or in a listbox ...You can also send inputs.The cool thing ...

    ftp dos command

    this component let you execute a dos program (exe, com or batch file) and catch the ouput in order to put it in a memo or in a listbox, ... you can also send inputs. the cool thing of this component...

    Spire.Pdf.zip 读取PDF文件中的信息

    } catch (UnsupportedEncodingException e) { e.printStackTrace(); } str = str.replace("Evaluation Warning : The document was created with Spire.PDF for Java.", "") .replace("450万+...

    axios:前后端交互的实现方式

    // Something happened in setting up the request that triggered an Error console.log(error.message); } }); ``` 2. Promise 支持 Axios 基于 Promise,使得链式调用和错误处理更加优雅。上述示例展示了...

    PLock-简单高效的跨进程锁,支持读写锁分离.zip

    You can clone this repository, then run 'debug' build variant and 'second' build variant, after that you can see two applications running on your phone which named PLock-FirstProcess and PLock-...

    axios入门示例代码(带文档教程)

    // Something happened in setting up the request that triggered an Error console.log(error.message); } }); ``` #### 发送 POST 请求 POST 请求同样方便,可以传递数据: ```javascript axios.post('...

    File_实用案例_实现文件拷贝_FileCopy.java

    * static copy() method that other programs can use to copy files. **/ public class FileCopy { /** The main() method of the standalone program. Calls copy(). */ public static void main(String[] ...

    Tenzin:RedAPI 的学术日历模块

    // Calling a year will return the academic calendar starting with that year // (In this case, 2014-15) academic_calendar.getJSON(2014) // Yay got the data .then(function (data) {...}) // On noes,...

    Designing A Common Sense Approach to Web & Mobile Application Design

    Prevent and Catch Errors with Poka-yoke Devices 191 Poka-yoke on the web 192 Prevention devices 193 Detection devices 195 Turn errors into opportunities 200 Feeling smart 202 Ditch Anything ...

    JAVA实现MQ发送接收消息详解

    // Now specify the queue that we wish to open, // and the open options... MQQueue remoteQ = qMgr.accessQueue(qName, openOptions); // Define a simple WebSphere MQ message, and write some text in ...

    JSTL语法及参数详解

    &lt;c:out value="Some code that might throw an exception"/&gt; &lt;/c:catch&gt; ${exception.message}"/&gt; ``` ##### 5. 条件判断标签 - `&lt;c:if&gt;` - `&lt;c:choose&gt;`,`&lt;c:when&gt;`,`&lt;c:otherwise&gt;` 这些标签用于根据不同的...

Global site tag (gtag.js) - Google Analytics