歷屆試題 螞蟻感冒
時間限制:1.0s 記憶體限制:256.0mb
問題描述
長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關於螞蟻在杆上面爬的題目,我以前見過,可是當時嫌麻煩沒寫 t_t 於是藍橋杯初賽這道題杯具了
傳送門:
如果能搞明白螞蟻交換位置和直接穿過去是乙個意思。問題就會迎刃而解。
那道題能用數學方法直接算,用不著一步步模擬,這道題我沒想到類似的解法,只能一步步模擬了
我把螞蟻放到了兩個桿子上面,向左爬的乙個桿子,向右爬的乙個桿子,以避免重疊時覆蓋資料的問題
#include using namespace std;
int main()
,b[101]=;
int n,i,j,ans=0;
cin>>n;
cin>>j;
if (j>0)
a[j]=2;
else
b[-j]=2;
for (i=1;i>j;
if (j>0)
a[j]=1;
else
b[-j]=1; }
while (n)
for (i=98;i;--i)
if (a[i])
if (b[1]>0)
for (i=2;i<100;++i)
if (b[i])
} cout<
kdwycz的**:
kdwyz的刷題空間:
藍橋杯 PREV 27 螞蟻感冒 模擬
歷屆試題 螞蟻感冒 時間限制 1.0s 記憶體限制 256.0mb 問題描述 長100厘公尺的細長直桿子上有n只螞蟻。它們的頭有的朝左,有的朝右。每只螞蟻都只能沿著桿子向前爬,速度是1厘公尺 秒。當兩隻螞蟻碰面時,它們會同時掉頭往相反的方向爬行。這些螞蟻中,有1只螞蟻感冒了。並且在和其它螞蟻碰面時,...
藍橋學習 PREV 27
試題 歷屆試題 prev 27 螞蟻感冒 問題描述 長100厘公尺的細長直桿子上有n只螞蟻。它們的頭有的朝左,有的朝右。每只螞蟻都只能沿著桿子向前爬,速度是1厘公尺 秒。當兩隻螞蟻碰面時,它們會同時掉頭往相反的方向爬行。這些螞蟻中,有1只螞蟻感冒了。並且在和其它螞蟻碰面時,會把感冒傳染給碰到的螞蟻。...
藍橋杯 螞蟻感冒 (模擬)
長100厘公尺的細長直桿子上有n只螞蟻。它們的頭有的朝左,有的朝右。每只螞蟻都只能沿著桿子向前爬,速度是1厘公尺 秒。當兩隻螞蟻碰面時,它們會同時掉頭往相反的方向爬行。這些螞蟻中,有1只螞蟻感冒了。並且在和其它螞蟻碰面時,會把感冒傳染給碰到的螞蟻。請你計算,當所有螞蟻都爬離桿子時,有多少只螞蟻患上了...