博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 2717 Catch That Cow(哎!居然没想到用bfs)
阅读量:4139 次
发布时间:2019-05-25

本文共 2309 字,大约阅读时间需要 7 分钟。

Catch That Cow

Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 9842 Accepted Submission(s): 3079
Problem 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.
Source
/*终于AC了  *///看了别人的代码 其实可以用结构体  建个数组记忆是否进过队  并且N不用那么大//N=100000+10就够了 因为太大也不可能是答案//优化空间可以改成  N=100000+10   //(不知道每次查长度需要时间不) 要的话改成结构体可以省时间 #include 
#include
#include
#include
#include
using namespace std;const int N=100000*6+10;queue
q;bool book[N];int main(){ int a,b,re,tmp,i; while(scanf("%d%d",&a,&b)==2){ while(!q.empty()) q.pop(); re=0; memset(book,0,sizeof(book)); book[a]=1; q.push(a); while(!q.empty()){ int len=q.size(); for(i=0;i
0&&!book[tmp-1]){ book[tmp-1]=1; q.push(tmp-1); } if(tmp*2
#include
#include
using namespace std;const int N=100000;struct Node{ int v,t;}node,tmp;queue
q;int main(){ int a,b; while(scanf("%d%d",&a,&b)==2){ while(!q.empty()) q.pop(); node.v=a; node.t=0; q.push(node); while(!q.empty()){ node=q.front(); q.pop(); if(node.v==b) break; tmp.v=node.v+1; tmp.t=node.t+1; q.push(tmp); tmp.v=node.v-1; tmp.t=node.t+1; q.push(tmp); tmp.v=node.v*2; tmp.t=node.t+1; q.push(tmp); } printf("%d\n",node.t); } return 0;}*//*想水一下 水不过 TLE#include
#include
using namespace std;const int N=100000;int b,re;void dfs(int now,int sum){ if(sum>re) return; else if(now==b){ if(sum

转载地址:http://dfmvi.baihongyu.com/

你可能感兴趣的文章
C/C++的全局变量能否利用函数初始化?
查看>>
数据库入门
查看>>
html入门(要用到, 所以学学, 记录一下)
查看>>
html的<script>脚本:JavaScript入门
查看>>
html的<style>样式:css入门
查看>>
html测验小题目(来源于W3School)
查看>>
tri-networks integration?
查看>>
iptv与ott (转自维基百科)
查看>>
感受一下JS
查看>>
《一问一世界》 杨澜
查看>>
玩转Android中的setprop, getprop, watchprops命令
查看>>
switch中的非case非default语句会执行吗?
查看>>
三个bug的定位过程---也谈追踪配置库记录的重要性
查看>>
当同一个 HTML 元素被不止一个样式定义时,会使用哪个样式呢? (以后我要常驻www.w3school.com.cn)
查看>>
div中class和id有什么区别?
查看>>
布尔变量应该初始化为true还是false?
查看>>
CSS后代选择器
查看>>
CSS中的position
查看>>
为什么不要将html中的id设置为纯数字?
查看>>
如何利用js正则表达式判断ip地址的合法性?(正则表达式太厉害了)
查看>>