Nyoj 990 螞蟻感冒 思維)

2021-07-10 07:38:49 字數 995 閱讀 3971

時間限制:

1000 ms  |  記憶體限制:

65535 kb

難度:2 描述

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

輸入

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

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

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

樣例輸入

3

5 -2 8

5-10 8 -20 12 25

樣例輸出駿

1

3

**第五屆藍橋杯

上傳者tc_楊闖亮

第一眼看到這題就想起了巫澤俊大神寫的競賽書上的例題,思路一模一樣,掉頭和穿過情況其實是一樣的,明白這一點就好想了,只要是比第一只螞蟻位置靠後並且向左走的都會傳染,同理,比第一只螞蟻位置靠前並且像右走的也會感染。所以式子就出來了,ans=right+left+1(要加第一只螞蟻)。但有兩種特殊情況,1.所有螞蟻全向右走 2.所有螞蟻全向左走,這兩種情況輸出的都是1

上**~

#include#includeusing namespace std;

int main()

for(i=1;ifabs(a[0])&&a[i]<0)

l++;

if(fabs(a[i])0)

r++;

}if(a[0]<0&&r==0||a[0]>0&&l==0)

cout<<"1"<

NYOJ990 螞蟻感冒

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

藍橋杯 NYOJ 990 螞蟻感冒

以前寫藍橋杯的時候不會寫,看了劉汝佳的uva 10881後發現好簡單 就是把螞蟻當作不會回頭,只是直接穿過 那麼兩個螞蟻穿過後就會讓另外乙隻也感冒 所以只需要判斷一下能穿過的螞蟻的數量 對於一開始感冒螞蟻的位置p,假設p 0 p會碰到右邊所有向左走的螞蟻,那些在右邊被p碰到的螞蟻會去碰到它左邊所有向...

nyist 990 螞蟻感冒

速度是迷惑人的,螞蟻開始的位置是確定的,走起來後相互間的位置也是確定的!螞蟻最後走出去就好比 正負號相間的乙個序列最後變為左半部位負號右半部為正號 負號代表向左走,正號代表向右走 include include includeusing namespace std int abs int x int...