• 倍增


    倍增是一个运用广泛的算法,他博大精深

    什么是倍增

    倍增,意思是成倍的增加增长,成倍地增长
    这是废话,没什么用,但是这对于之后的学习还是有点启发作用的

    前序

    现在假设你在A点,你需要前往B点去见你的妹子

    你需要尽快的时间到达B点,以求跟妹子待得时间更长,于是你求教了一些人

    A:泡什么妹子,还不如回家打摆(搞颓),88不理你了,回家打游戏去
    B:泡妹子要有恒心,要一步一个脚印,踏踏实实,所以要一步一步的走,总会走到
    C:既然要快,直接"飞"到B啊,管那么多干什么?泡妹子要快,下手要早,那么啰嗦干什么?你只要在之前踩点就好了,这样子你就可以在妹子需要你的时候第一时间到达目的地(例如"一个省会"就是这么做的)

    dalao:前面都是假的,不要信这些人的,这都是错的,我来举一些反例
            A:你这样子泡不到妹子
            B:如果妹子距离你很远的话,要么是你累死在路上了,要么是妹子等的不耐烦了,走了,不管怎么样你都泡不到妹子
            c:如果你喜欢的妹子多怎么办?还踩点,脑子够用吗,记不住啊?

    所以啊,还是要听我的。

    你只需要会倍增,你就可以事倍工log。所以啊还是要学倍增

    倍增算法

    现在来正式讲一讲倍增。
    假如你在A点,你只需要踩点是记录下2^n就好了,这样子你就可以很快的到达目的地了,那么应该怎么跳呢?
    当然是从大往小跳啊,如果能跳就跳,不能跳就不跳
           eg:
                  假设A到B的长度是26;
                  首先你先处理最长的要跳多少步,现在假设最长要跳32步,于是我们从32开始枚举

    枚举到要跳多少步 能否跳 跳完剩余几步
    32 NO 26
    16 YES 10
    8 YES 2
    4 NO 2
    2 YES 0
    0 YES 0

    好了,这就结束了,我们发现我们只需要枚举6次,而暴力跳却需要26次,所以这个算法的效率十分的高

           ps:
                  1. 为什么不可以从小往大枚举呢?
                  我们来看看一个例子如:5,5=4+1,而从小往大枚举的话会多出一个2,这是还需要回溯,十分麻烦,而从大往小枚举就避免了这种情况。
    2. 为什么不可以重复选呢?因为如果你可以重复选的话,你为什么不选这个数的两倍呢?
    好了,这个算法就讲到这里了,接下来是后续

    后续

    所以说学好算法对泡妹子也是很有帮助的

  • 相关阅读:
    hdoj:2075
    hdoj:2072
    hdoj:2071
    hdoj:2070
    hdoj:2069
    test001
    hdoj:2067
    hdoj:2061
    hdoj:2058
    hdoj:2057
  • 原文地址:https://www.cnblogs.com/hbxblog/p/9852387.html
Copyright © 2020-2023  润新知