白话解说:转载原地址
【序言】
我认为所有能优化复杂性的算法都是魔法,所有能形象化复杂性的文字都很伟大。 我觉得倍频算法很厉害,所以决定写点什么来纪念。 但是,作为一个非常不称职的OIER,我在看别人的算法分析时讨厌整个版本的I,j,k,所以当我看到鼠标时,我会惯性移动到右上角的符号语言。 所以,我想最形象地纪念那个。
【一】
从前,有一只可爱得不得了的白兔,想去离a地很远的b地。
2B小白兔:
向右一步,向左一步,向右很多步,还有……(对不起,这是脑浆)
普通小白兔:
往右走一步,再走一步,再走一步……再走一步,哇,到了! 很开心!
超级小白兔:
向右跳得很大,一步一步跳向b,静静地回头,鄙视一步跳着的白兔。
我相信作为普通人,不会考虑2B白兔的这种做法。 那是因为脑子太差了。
同时,我相信作为普通人,不会考虑超级白兔的这种做法。 因为……
“擦! 你说什么时候能这样跳! “愤怒”
“我什么时候说不行! (卖萌)”
但是,你必须承认。 超级白兔还有两把刷子。 因为那真的很厉害。 太厉害了,你想都没想过。
【二】
从前,有一只可爱得不得了的白兔,它想去远离a地的被b、c、d、e、f几个梦想笼罩的地方。 (请不要问我是从哪里来的。 我的梦想在很远的地方)
2B小白兔:
对不起,我的生命有限,我不想再提了)
普通小白兔:
一步又一步,生命不息,跳跃不止。
超级小白兔:
一步是b,另一步是c,另一步是d,另一步是e,另一步是f,完成了。
不用解释,我知道你想成为那个超级白兔。 嗯,你一定是那样跳舞的。 (神马? 不是吗? 你的智商我救不了……)
是的,不那么跳的人对社会很抱歉啊。 浪费时间是浪费青春,浪费青春是犯罪。
是的,既然你这样跳,你能告诉我你是怎么知道从a跳两个格子就正好到b的吗? 你在空中使用了GPRS全球卫星定位系统吗? 别过来! 主页你现在没有用这样的东西。 你的白色软下酒菜兔子还在用这个吗? 你能笑我吗? 哈哈哈,一定是临走前偷偷学普通兔子一步一跳,记笔记抄下来,从每个格子上记下任意一步跳就到的地方,天亮前回来,风光如踏脚计划大步跳,我但是你有这种真诚的感觉,所以为你的聪明鼓掌吧。
【三】
从前,有一只可爱得不得了的白兔,想去离a地很远的1 (这里省略很多0 )的地方。 那是因为我真的没有事做。
普通小白兔:
从离开家的那天起,我就没有想过一步一步放弃,冲进终点。 (嗯,加油)
超级小白兔:
轻率,决不多走一步。 〈哼哼〉
你想知道最后的结果吗? 呵呵,好像还没有结果……
写给普通小白兔的话:
亲爱的白兔,我知道zzdhxc。 你很朴素。 但是,苦海没有职业生涯,回头看是岸。
写给超级小白兔的话:
我不知道你的小手稿是否还足够。 我不知道你摸黑出门是为了什么。 你不觉得你的住处早就暴露了吗? 你觉得你聪明吗? 不,你错了。 请做下酒菜。 永远都是。 要说为什么,那是因为你不知道加倍算法。 这是你失败的根源。 再见,我心中永远不会消失的愚蠢的兔子。
-------------请参阅
-------------------------------------------------- 卖萌分割线 ----------------------------------------------------------------------------------------------------
普通兔子 = 速度慢,无资源损耗 || 超级兔子 = 速度快,多资源损耗
还记得那只离我们远去的2B兔子吗?对,其实我们早该想到了,越蠢得不可思议的兔子身上竟然有巨大的宝藏,再看看它的名字吧,“2B”!去掉一个“B”!就是“2”!对,你没有听错,就是“2”,你能想到4、8、16、32吗?
再想想,超级兔子的小抄本不够用,不就是因为它为了应对所有的目的地信息,它记录下了任何一个格子跳任意步会到达的格子,100个格子它要记录大概5000条信息,1000个格子大概要记录500000条信息,10000个格子它大概要记录50000000条信息,至于你晕没晕,我相信它应该晕了。
可不可以把记录的信息数降到最低呢?当然可以,2B兔子帮你忙,让你用2战胜敌人。
thdjqm只记录任何一个格子跳1、2、4、8、16……步会到达的格子的时候,你有没有发现信息数突然少了好多好多啊!真的少了好多好多啊!100个格子只要500条左右,1000个格子只要5000条左右,10000个格子只要50000条左右,不比不知道,一比吓一跳啊!
安心小抄五十年,健康生活一辈子。
从此,超级小白兔成为了聪明小白兔,它的生活是这样的:
在夜深人静的时候,它偷偷出门做小抄,记录下从每个格子跳1、2、4、8……个格子后会到达的格子,然后在太阳出来后,它在qjdxd,开始了表演。
从A出发:若跳8个格子(超过B了,放弃)
若跳4个格子(超过B了,放弃)
若跳2个格子(没超过B,跳吧)
若跳1个格子(没超过B,跳吧)
从B出发:…………
多么轻松的事情,只要一本很薄的小抄就可以了,最关键的是:它绝对不会连着跳两步都是跳相同的格子数,因为如果跳两次2个格子都是可行的话,那么它干嘛不跳4个格子捏?
我们可是从多到少来判断的啊!!
好的,聪明小白兔白天的事情你已经看懂了,且看它晚上是怎么打小抄的吧。
从A出发跳1步到1(记录下来)
从1出发跳1步到2(记录下来)
…………(跳1步的记录完毕)
从A出发跳2步?就是从A出发跳1步再跳1步的到的地方,翻看小抄,直接誊写从1出发跳1步会到的2这个格子作为A跳2步会到的格子。
从1出发跳2步?跟刚才一样,直接誊写。
…………(跳2步的记录完毕)
从A出发跳4步?你还真去跳4步?不,它也就是等于从A出发跳2步到的2号点再跳2步会到的格子,那么我们直接誊写2号格子跳2步会到的格子就可以了。
……
……
看看聪明小白兔多么聪明!也许还有自认为更聪明的:
“在记录A跳4步会到的格子的时候,为什么不直接从A跳4步看到了哪里再记录下来呢?跳4步跟跳1步的代价不是一样的么”
“我这样回答你好了!把你丢在纽约的一个公交车站,问你一条线路的下一个站是什么?你怎么办?当然是自己亲自走到下一个站就知道了!那如果问你接下来的第4个站是什么?难道你可以直接走到第4个站而不用途径其它的站点了吗?这不现实,你还是要一个一个站的走,因为关键在于你只能知道你目前所在站点的下一个站是什么,想知道下下个站,除非你已经到了下个站,兔子跳格子也跟这类似,虽然聪明小白兔神通广大,但是不至于伟大到可以提前预知跳几步会到哪里啊!!”
从此,聪明小白兔避免了成为人类的下酒菜,而被一群OIER们像神一样的供奉了起来,不要问它为什么,因为它也不知道,貌似只是某人卖了个小萌,事情就变成这样了。