藍橋杯2014 螞蟻感冒

2021-10-08 09:45:56 字數 1221 閱讀 9890

【題目】

長100厘公尺的細長直桿子上有n只螞蟻。

它們的頭有的朝左,有的朝右。每只螞蟻都只能沿著桿子向前爬,速度是1厘公尺/秒。

當兩隻螞蟻碰面時,它們會同時掉頭往相反的方向爬行。

這些螞蟻中,有1只螞蟻感冒了。

並且在和其它螞蟻碰面時,會把感冒傳染給碰到的螞蟻。

請你計算,當所有螞蟻都爬離桿子時,有多少只螞蟻患上了感冒。

【資料格式】

第一行輸入乙個整數n (1 < n < 50), 表示螞蟻的總數。

接著的一行是n個用空格分開的整數 xi (-100 < xi < 100), xi的絕對值,表示螞蟻離開桿子左邊端點的距離。正值表示頭朝右,負值表示頭朝左,資料中不會出現0值,也不會出現兩隻螞蟻占用同一位置。其中,第乙個資料代表的螞蟻感冒了。

要求輸出1個整數,表示最後感冒螞蟻的數目。

【樣例】

輸入:3

5 -2 8

程式應輸出:

1再例如,輸入:

5-10 8 -20 12 25

程式應輸出:

3【注意點】

1、螞蟻碰面後不要當做掉頭,當做擦肩而過

2、忽略100cm長度

3、不要把目光侷限於單個的螞蟻,把螞蟻分為 某個特殊螞蟻左側向右、向左爬行的螞蟻 和 某個特殊螞蟻右側向右、向左的螞蟻 四類來考慮即可

#include

#include

using

namespace std;

struct ant

ant[50]

;bool

cmp(ant a1,ant a2)

intmain()

ant[0]

.cool=1;

sort

(ant,ant+n,cmp)

;int lr=

0,rl=0;

for(i=

0;i)int ant_pos=i;

for(i=ant_pos+

1;i(ant[i]

.dir<0)

rl++;if

((ant[ant_pos]

.dir>

0&&rl==0)

||(ant[ant_pos]

.dir<

0&&lr==0)

) cout<<

"1"

cout<1

}

2014藍橋杯 8 螞蟻感冒

題目描述 長100厘公尺的細長直桿子上有n只螞蟻。它們的頭有的朝左,有的朝右。每只螞蟻都只能沿著桿子向前爬,速度是1厘公尺 秒。當兩隻螞蟻碰面時,它們會同時掉頭往相反的方向爬行。這些螞蟻中,有1只螞蟻感冒了。並且在和其它螞蟻碰面時,會把感冒傳染給碰到的螞蟻。請你計算,當所有螞蟻都爬離桿子時,有多少只...

藍橋杯 螞蟻感冒

時間限制 1 sec 記憶體限制 128 mb 長100厘公尺的細長直桿子上有n只螞蟻。它們的頭有的朝左,有的朝右。每只螞蟻都只能沿著桿子向前爬,速度是1厘公尺 秒。當兩隻螞蟻碰面時,它們會同時掉頭往相反的方向爬行。這些螞蟻中,有1只螞蟻感冒了。並且在和其它螞蟻碰面時,會把感冒傳染給碰到的螞蟻。請你...

藍橋杯 螞蟻感冒

問題描述 長100厘公尺的細長直桿子上有n只螞蟻。它們的頭有的朝左,有的朝右。每只螞蟻都只能沿著桿子向前爬,速度是1厘公尺 秒。當兩隻螞蟻碰面時,它們會同時掉頭往相反的方向爬行。這些螞蟻中,有1只螞蟻感冒了。並且在和其它螞蟻碰面時,會把感冒傳染給碰到的螞蟻。請你計算,當所有螞蟻都爬離桿子時,有多少只...