題目
長100厘公尺的細長直桿子上有n只螞蟻。它們的頭有的朝左,有的朝右。
每只螞蟻都只能沿著桿子向前爬,速度是1厘公尺/秒。當兩隻螞蟻碰面時,它們會同時掉頭往相反的方向爬行。
這些螞蟻中,有1只螞蟻感冒了。並且在和其它螞蟻碰面時,會把感冒傳染給碰到的螞蟻。
請你計算,當所有螞蟻都爬離桿子時,有多少只螞蟻患上了感冒。
輸入格式
第一行輸入乙個整數n (1 < n < 50), 表示螞蟻的總數。
接著的一行是n個用空格分開的整數 xi (-100 < xi < 100), xi的絕對值,表示螞蟻離開桿子左邊端點的距離。正值表示頭朝右,負值表示頭朝左,資料中不會出現0值,也不會出現兩隻螞蟻占用同一位置。其中,第乙個資料代表的螞蟻感冒了。
輸出格式
要求輸出1個整數,表示最後感冒螞蟻的數目。
樣例輸入
35 -2 8
樣例輸出
1樣例輸入
5-10 8 -20 12 25
樣例輸出
3陷阱與思路
陷阱1:這題的杆的長度和螞蟻爬行速度都是陷阱,如果考慮這些就走入了誤區。
思路1:因為每乙隻螞蟻速度都相等,可以判斷只有相對爬行的螞蟻才會相遇,且所有相對爬行的螞蟻都會相遇。
陷阱2:其次是每次碰面,兩隻螞蟻都會反向而行,如果你的思路真的按著這個模擬,就和撞球一樣對對碰,估計是難以知道什麼時候才能結束了。
思路2:實際上,螞蟻只有感冒和沒感冒之分,因此當感冒的螞蟻與沒感冒的螞蟻相碰時,這兩隻螞蟻已經是一樣的了,相碰然後反向爬行完全可以看作相碰然後沿著原路繼續爬行。
思路3:實際上,被感染的鏈路是這樣的,第一只螞蟻會感染與它相遇的每乙隻螞蟻,然後第一被感染的螞蟻會感染與第一只螞蟻同行且在它後面的螞蟻。只有這兩隻螞蟻會感染其他螞蟻,其他螞蟻不具感染條件
**
#includeusing namespace std;
int main();
for(int i=0;i>away[i]; }
if(away[0]>0)
}else
} cout
}
藍橋杯 螞蟻感冒
時間限制 1 sec 記憶體限制 128 mb 長100厘公尺的細長直桿子上有n只螞蟻。它們的頭有的朝左,有的朝右。每只螞蟻都只能沿著桿子向前爬,速度是1厘公尺 秒。當兩隻螞蟻碰面時,它們會同時掉頭往相反的方向爬行。這些螞蟻中,有1只螞蟻感冒了。並且在和其它螞蟻碰面時,會把感冒傳染給碰到的螞蟻。請你...
藍橋杯 螞蟻感冒
問題描述 長100厘公尺的細長直桿子上有n只螞蟻。它們的頭有的朝左,有的朝右。每只螞蟻都只能沿著桿子向前爬,速度是1厘公尺 秒。當兩隻螞蟻碰面時,它們會同時掉頭往相反的方向爬行。這些螞蟻中,有1只螞蟻感冒了。並且在和其它螞蟻碰面時,會把感冒傳染給碰到的螞蟻。請你計算,當所有螞蟻都爬離桿子時,有多少只...
藍橋杯 螞蟻感冒
長100厘公尺的細長直桿子上有n只螞蟻。它們的頭有的朝左,有的朝右。每只螞蟻都只能沿著桿子向前爬,速度是1厘公尺 秒。當兩隻螞蟻碰面時,它們會同時掉頭往相反的方向爬行。這些螞蟻中,有1只螞蟻感冒了。並且在和其它螞蟻碰面時,會把感冒傳染給碰到的螞蟻。請你計算,當所有螞蟻都爬離桿子時,有多少只螞蟻患上了...