日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

奇妙的旅行[XDU1012]

系統 2337 0
Problem 1012 - 奇妙的旅行
Time Limit : 1000MS ? Memory Limit : 65536KB ? Difficulty :
Total Submit : 396? Accepted : 116? Special Judge : No
Description

  炸雞兒非常喜歡旅行,而且喜歡在坐標軸上旅行,從起點A到終點B(0<=A,B<=100000)。他旅行的方法很特殊,喜歡用跳的,每次跳一個地方只有三種方法:
從點C跳到點C+1。
從點C跳到點C-1。
從點C跳到點2*C。
請問他從A跳到B至少需要多少步?

Input
每組數據兩個整數A,B(0<=A,B<=100000)。
Output
每例輸出一行,表示至少需要的步數。
Sample Input
1 100000
0 100000
Sample Output
21
22
Hint
?
Source
Wang Miao
不知為什么,最近特喜歡做這樣的水水的bfs.
          #include<stdio.h>
          
            

#include
          
          <
          
            string
          
          .h>
          
            

#include
          
          <queue>


          
            using
          
          
            namespace
          
          
             std;


          
          
            struct
          
          
             node

{

    
          
          
            int
          
          
             val,step;

};


          
          
            int
          
          
             S,T;


          
          
            bool
          
           s[
          
            200010
          
          
            ];


          
          
            int
          
          
             bfs()

{

    memset(s,
          
          
            false
          
          ,
          
            sizeof
          
          
            (s));

    queue
          
          <node>
          
             q;

    
          
          
            while
          
           (!
          
            q.empty()) q.pop();

    node st;

    st.val
          
          =
          
            S;

    st.step
          
          =
          
            0
          
          
            ;

    q.push(st);

    s[S]
          
          =
          
            true
          
          
            ;

    
          
          
            while
          
           (!
          
            q.empty())

    {

        node st
          
          =
          
            q.front();

        q.pop();

        
          
          
            if
          
           (st.val==T) 
          
            return
          
          
             st.step;

        
          
          
            if
          
           (st.val+
          
            1
          
          <=T*
          
            2
          
          
            )

        
          
          
            if
          
           (!s[st.val+
          
            1
          
          
            ])

        {

            s[st.val
          
          +
          
            1
          
          ]=
          
            true
          
          
            ;

            node tmp
          
          =
          
            st;

            tmp.step
          
          ++
          
            ;

            tmp.val
          
          =st.val+
          
            1
          
          
            ;

            q.push(tmp);

        }

        
          
          
            if
          
           (st.val-
          
            1
          
          >
          
            0
          
          
            )

        
          
          
            if
          
           (!s[st.val-
          
            1
          
          
            ])

        {

            s[st.val
          
          -
          
            1
          
          ]=
          
            true
          
          
            ;

            node tmp
          
          =
          
            st;

            tmp.step
          
          ++
          
            ;

            tmp.val
          
          =st.val-
          
            1
          
          
            ;

            q.push(tmp);

        }

        
          
          
            if
          
           ((st.val<<
          
            1
          
          )<=T*
          
            2
          
          
            )

        
          
          
            if
          
           (!s[st.val<<
          
            1
          
          
            ])

        {

            s[st.val
          
          <<
          
            1
          
          ]=
          
            true
          
          
            ;

            node tmp
          
          =
          
            st;

            tmp.step
          
          ++
          
            ;

            tmp.val
          
          =st.val<<
          
            1
          
          
            ;

            q.push(tmp);

        }

    }

}


          
          
            int
          
          
             main()

{

    
          
          
            while
          
           (scanf(
          
            "
          
          
            %d%d
          
          
            "
          
          ,&S,&T)!=
          
            EOF)

    {

        
          
          
            if
          
           (S>
          
            T)

        {

            printf(
          
          
            "
          
          
            %d\n
          
          
            "
          
          ,S-
          
            T);

            
          
          
            continue
          
          
            ;

        }

        
          
          
            int
          
           ans=
          
            bfs();

        printf(
          
          
            "
          
          
            %d\n
          
          
            "
          
          
            ,ans);

    }

    
          
          
            return
          
          
            0
          
          
            ;

}
          
        

?

奇妙的旅行[XDU1012]


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 靖西县| 南昌市| 丰都县| 浦县| 茂名市| 石渠县| 改则县| 佛学| 云龙县| 惠东县| 中西区| 桑植县| 封丘县| 嘉义县| 漯河市| 哈巴河县| 绵阳市| 方正县| 柳州市| 肃南| 佛教| 沂水县| 钟祥市| 吴忠市| 南通市| 唐河县| 达州市| 丹寨县| 曲麻莱县| 涿鹿县| 普陀区| 廊坊市| 绍兴市| 东港市| 康乐县| 东方市| 台安县| 象山县| 夏邑县| 麟游县| 龙岩市|