蟲子爬進問題

2021-08-03 05:29:40 字數 901 閱讀 5472

1.問題大意

乙個n英吋的井中有一條1英吋的蟲。蟲子u英吋/minutes,爬一分鐘必須休息一分鐘。休息期間蟲子會掉d英吋。給出需要多少秒乙個蟲爬出井。

題意的理解很重要,開始時我理解為必須剛好最後一步到達井口,才算爬出井。所以對立面 n=19、u=3、d=1時間為19的例子算了半天都沒有找到乙個合理的到達井口的走法。後來看題解,發現並不是剛好到達,只要最後一部能大於等於n也算到達。

2.迴圈減法

方法:

將n與u比較,如果n小於等於u這說明下一步可以一步出井,否則需要跳一步滑下一下,兩秒鐘。然後再進行上面的判斷。
**:

#include 

using

namespace

std;

int main()

ans++;

cout

<"\n";

}return

0;}

3.數學計算法
方法: ans = 向上取整[(n-u)/(u-d)]*2+1

向上取整[(n-u)/(u-d)] = [(n-u+u-d-1)/(u-d)] = [(n-d-1)/(u-d)]

即:ans = [(n-d-1)/(u-d)]

為什麼要上去整:最後一步肯定小於等於u,因此n-u表示走一步掉一步能到達的高度。因為u>d,所以如果a=(n-u)/(u-d)不是整數的話如果下取整,那麼跳a*2步,剩下的距離大於u所以不能一步跳上去,還需要再跳一步才能到達。如果有小數時上取整,第a*2-1步是不是到達井口的,所以可以放心跳,同時最後一步也可以到達井口。

參考

[1] 題目**hdu 1049 生詞

inch 英吋 worm 蟲 well 井 climb 爬 portion 一部分

「蟲子」的問題

最近幾天安裝分公司開發的一套軟體,給本地公司員工作培訓。可誰知軟體裝上了,卻不能用,也不出錯,就是得不到正確的結果。通過rtx詢問了一下,被告知 不可能,怎麼可能呢?這邊一點問題也沒有,你在試一下 於是解除安裝 安裝 解除安裝 安裝 大約進行了n遍,仍是不行。於是俺乙個 過去,這次解釋和上次袋是不太...

再談「蟲子」的問題

很感謝 加大碼 同志在上篇隨筆的恢復,讓我想起了許多問題。常言道,千里之堤,毀於蟻穴,軟體同樣如此。雖然軟體中的 bug本身不會像蟻穴那樣慢慢變大,但對使用者而言,它引起的錯誤 異常等的次數卻會越積越多,最終我們會失去使用者,造成不可挽回的損失,因此,這些質量的問題,我們必須注意,並制定相應的措施 ...

爬台階問題

跳台階問題 乙個台階總共有n級,如果一次可以跳1級,也可以跳2級。求總共有多少總跳法,並分析演算法的時間複雜度。在這個跳樓梯的題目中,每次可以跳1個台階或者2個台階。我們考慮,我們是如何跳到n這個台階的,一共有兩種方式,一種是從n 1台階跳乙個台階,另外一種是從 n 2跳2個台階,所以 f n f ...