螞蟻爬桿(去表象分析異同)

2021-08-14 09:09:20 字數 732 閱讀 1824

一群螞蟻在長為lcm的水平竿上爬行,每乙隻的速度都恒為1cm/s。當乙隻正在爬行的螞蟻到達竿子的邊緣時,它會立即從桿上掉落。當兩隻螞蟻相遇時,它們會各自反向爬回去。我們知道每只螞蟻原來距離桿子左端的距離,但不幸的是,我們不知道它當前的方向。你的任務是計算所有螞蟻都從竿子上掉落所需的最短時間和最長時間。

測試資料有多組,每組包括兩行:

第一行:竿子的長度(以cm為單位,1 <= n <= 1e6),和在竿子上的螞蟻的數量n(1 <= n <= 1e6)

第二行:每只螞蟻距離竿子左端的距離,以空格分開,每個數均不超過l且大於0

對於每組測試輸出一行,包括兩個整數:全部螞蟻掉落所需的最短時間和最長時間,以空格分開

10 3

2 6 7

214 7

11 12 7 13 176 23 191

4 838 207

題解:碰撞後反向爬其實就是相當於擦肩而過,所以最短時間就是靠近中間的那個點到兩端點的較小值,最長時間就是最靠近兩端點的點到另一邊端點的距離

#include int max(int a,int b);

int min(int a,int c);

int main()

printf("%d %d\n",mint,maxt);

} return 0;

}int max(int a,int b)

int min(int a,int b)

螞蟻爬桿問題分析

題目 讀完這道題以後,我的想法是 最短時間考慮如下 首先標出木桿的中點,即在 0 27 2 13.5厘公尺處。然後所有的螞蟻都沿著木桿向離自己較近的一端走,這樣所有螞蟻都離開木桿的時間是最短的,即,為距離木桿中點最近的螞蟻走向離它最近一端所用的時間。所以此題為11s。0 13.5 27 最長時間考慮...

java螞蟻爬桿

ant private void setmaxtime maxtime maxnearsideposition.divide speed public bigdecimal getmaxtime private void setmintime bigdecimal anotherhalflength...

螞蟻爬桿問題

問題描述 有一根27厘公尺長的細木桿,在第3厘公尺,7厘公尺,11厘公尺,17厘公尺,23厘公尺這五個位置上各有乙隻螞蟻,木桿很細,不能同時通過兩隻螞蟻,開始時,螞蟻的頭朝向左還是右是任意的,他們只會朝前走或掉頭,但不會後退,當兩隻螞蟻相遇後,螞蟻會同時掉頭朝反方向走,假設螞蟻們每秒鐘可以走1厘公尺...