zoukankan      html  css  js  c++  java
  • openjudge 2971:抓住那头牛 解题报告

    总时间限制: 

    2000ms

    内存限制: 

    65536kB

    描述

           农夫知道一头牛的位置,想要抓住它。农夫和牛都位于数轴上,农夫起始位于点N(0<=N<=100000),牛位于点K(0<=K<=100000)。农夫有两种移动方式:

    1、从X移动到X-1或X+1,每次移动花费一分钟。
    2、从X移动到2*X,每次移动花费一分钟。 
    假设牛没有意识到农夫的行动,站在原地不动。农夫最少要花多少时间才能抓住牛?

    输入

    两个整数,N和K

    输出

    一个整数,农夫抓到牛所要花费的最小分钟数

    样例输入

    5 17

    样例输出
    4
    这道题就是一道水题。但是。它非常的坑。总结一下BFS就是
    1,数组开够。
    2,牛和老夫的方向判断。
    3,重复入队的判断。
    4,超界的判断。
    5,人品好。  这是关键。hhh
    贴出代码。这个代码就非常简单了。
     1 #include<cstdio>
     2 #include<algorithm>
     3 using namespace std;
     4 int x,y;
     5 struct node
     6 {
     7     int x,times;
     8 };
     9 node q[3000010];
    10 int visit[1000010];
    11 int heads=1,last=1;
    12 int main()
    13 {
    14     scanf("%d%d",&x,&y);
    15     if(y<x)
    16     {
    17       printf("%d",x-y);
    18       return 0;
    19     }
    20     node a;
    21     a.x=x;a.times=0;
    22     q[heads]=a;
    23     while(heads<=last)
    24     {
    25       node n=q[heads];
    26       heads++;
    27       if(n.x==y)
    28       {
    29           printf("%d",n.times);
    30           break;
    31       }
    32       node n1=n;
    33       n1.times++;
    34       n1.x+=1;
    35       if(!visit[n1.x])q[++last]=n1 , visit[n1.x]=1;
    36       n1.x-=2;
    37       if(!visit[n1.x])q[++last]=n1 , visit[n1.x]=1;
    38       n1.x+=1;
    39       n1.x*=2;
    40       if(n1.x<=100000&&!visit[n1.x])q[++last]=n1 , visit[n1.x]=1;
    41     }
    42     return 0;
    43 }

    简直尴尬。

  • 相关阅读:
    CodeForces 219D Choosing Capital for Treeland (树形DP)
    POJ 3162 Walking Race (树的直径,单调队列)
    POJ 2152 Fire (树形DP,经典)
    POJ 1741 Tree (树的分治,树的重心)
    POJ 1655 Balancing Act (树的重心,常规)
    HDU 2196 Computer (树形DP)
    HDU 1520 Anniversary party (树形DP,入门)
    寒门子弟
    JQuery选择器(转)
    (四)Web应用开发---系统架构图
  • 原文地址:https://www.cnblogs.com/uncle-lu/p/5899120.html
Copyright © 2011-2022 走看看