長 100 厘公尺的細長直桿子上有 n 只螞蟻。
它們的頭有的朝左,有的朝右。
每只螞蟻都只能沿著桿子向前爬,速度是 1 厘公尺/秒。
當兩隻螞蟻碰面時,它們會同時掉頭往相反的方向爬行。
這些螞蟻中,有 1 只螞蟻感冒了。
並且在和其它螞蟻碰面時,會把感冒傳染給碰到的螞蟻。
請你計算,當所有螞蟻都爬離桿子時,有多少只螞蟻患上了感冒。
輸入格式
第一行輸入乙個整數 n, 表示螞蟻的總數。
接著的一行是 n 個用空格分開的整數 xi, xi 的絕對值表示螞蟻離開桿子左邊端點的距離。
正值表示頭朝右,負值表示頭朝左,資料中不會出現 0 值,也不會出現兩隻螞蟻占用同一位置。
其中,第乙個資料代表的螞蟻感冒了。
輸出格式
輸出1個整數,表示最後感冒螞蟻的數目。
資料範圍
1首先我們對於題目的理解他說是碰面就兩邊各自回頭我們不要這樣按題目直接來那樣會變得麻煩,我們不應該取跟蹤每乙個螞蟻的狀態這樣太難了(反正我是做不來),我們可以換一種思路就是碰面後直接穿過並且患上感冒,所以對於答案我們就有兩種情況,我們來說明一下
如果最開始的螞蟻方向是向右:①在這只螞蟻的左邊且方向為向左的螞蟻不可能感冒 ②在這只螞蟻的右邊且方向是向右的螞蟻不可能感冒 ③如果剛開始的螞蟻右邊且其右邊沒有向左的螞蟻則座標中只要螞蟻在開始螞蟻的左邊且向右的螞蟻也不會感冒,
對於剛開始螞蟻方向向右的情況類似只是方向變一下就行,來看**吧
#include
#include
#include
#include
#include
using
namespace std;
const
int n =60;
int w[n]
;int n;
int cnt;
//患病螞蟻的個數
bool
isleft()
return
false;}
bool
isright()
return
false;}
intmain()
/*如果最開始的螞蟻方向是向右
*在這只螞蟻的左邊且方向為向左的螞蟻不可能感冒
*在這只螞蟻的右邊且方向是向右的螞蟻不可能感冒
*如果剛開始的螞蟻右邊且其右邊沒有向左的螞蟻則座標中只要螞蟻在開始螞蟻的左邊且向右的螞蟻也不會感冒
*/if
(w[0
]>0)
}}//和判斷螞蟻向右的方法一樣只是方向要進行改變
else}}
//加上自己這乙隻
藍橋杯 螞蟻感冒
時間限制 1 sec 記憶體限制 128 mb 長100厘公尺的細長直桿子上有n只螞蟻。它們的頭有的朝左,有的朝右。每只螞蟻都只能沿著桿子向前爬,速度是1厘公尺 秒。當兩隻螞蟻碰面時,它們會同時掉頭往相反的方向爬行。這些螞蟻中,有1只螞蟻感冒了。並且在和其它螞蟻碰面時,會把感冒傳染給碰到的螞蟻。請你...
藍橋杯 螞蟻感冒
問題描述 長100厘公尺的細長直桿子上有n只螞蟻。它們的頭有的朝左,有的朝右。每只螞蟻都只能沿著桿子向前爬,速度是1厘公尺 秒。當兩隻螞蟻碰面時,它們會同時掉頭往相反的方向爬行。這些螞蟻中,有1只螞蟻感冒了。並且在和其它螞蟻碰面時,會把感冒傳染給碰到的螞蟻。請你計算,當所有螞蟻都爬離桿子時,有多少只...
藍橋杯 螞蟻感冒
長100厘公尺的細長直桿子上有n只螞蟻。它們的頭有的朝左,有的朝右。每只螞蟻都只能沿著桿子向前爬,速度是1厘公尺 秒。當兩隻螞蟻碰面時,它們會同時掉頭往相反的方向爬行。這些螞蟻中,有1只螞蟻感冒了。並且在和其它螞蟻碰面時,會把感冒傳染給碰到的螞蟻。請你計算,當所有螞蟻都爬離桿子時,有多少只螞蟻患上了...