長100厘公尺的細長直桿子上有n只螞蟻。它們的頭有的朝左,有的朝右。
每只螞蟻都只能沿著桿子向前爬,速度是1厘公尺/秒。
當兩隻螞蟻碰面時,它們會同時掉頭往相反的方向爬行。
這些螞蟻中,有1只螞蟻感冒了。並且在和其它螞蟻碰面時,會把感冒傳染給碰到的螞蟻。
請你計算,當所有螞蟻都爬離桿子時,有多少只螞蟻患上了感冒。
【資料格式】
第一行輸入乙個整數n (
1< n <50)
, 表示螞蟻的總數。
接著的一行是n個用空格分開的整數 xi (
-100
< xi <
100)
, xi的絕對值,表示螞蟻離開桿子左邊端點的距離。正值表示頭朝右,負值表示頭朝左,資料中不會出現0值,也不會出現兩隻螞蟻占用同一位置。其中,第乙個資料代表的螞蟻感冒了。
要求輸出1個整數,表示最後感冒螞蟻的數目。
例如,輸入:35
-28程式應輸出:
1再例如,輸入:5-
108-20
1225
程式應輸出:
3
資源約定:
峰值記憶體消耗 < 256m
cpu消耗 < 1000ms
這道題。。思維。。。如果思路按照題目要求可能有點迷糊。。
我們這樣思考。
題目要求說兩隻螞蟻相見都會反向相當於相見之後繼續按原來的方向前行。
因為相見的時候都在同一座標系嘛。然後都反向就相當於沒有反向嘛。所以這樣一思考就很好寫了
假如感冒的螞蟻向右走。那麼它會感染它右邊向左走的螞蟻。因為這些螞蟻被感染了嘛,然後不掉頭。所以會感染它左邊向右走的螞蟻。這些螞蟻也就是第一只感冒的螞蟻左邊向右走的螞蟻。
所以感染的數目就是上面的相加。
同理如果感冒的螞蟻向左走,也是一樣的道理啦。
這裡要注意一點。如果沒有螞蟻跟感冒的螞蟻相遇,那麼就不會發生感染。也就是只有乙隻螞蟻。
所以特判一下就可以啦~
上**啦~
#include
using
namespace std;
int a[55]
;int n;
int ans =1;
intmain()
int l =
0, r =0;
if(a[0]
<0)
else
if(a[i]
<0&&
-a[i]
>
-a[0])
}if(l)}
else
else
if(a[i]
>
0&& a[i]
> a[0]
)}if(l)
} cout << ans << endl;
return0;
}
第五屆藍橋杯C B組 螞蟻感冒
第五屆藍橋杯c b組 螞蟻感冒 描述長100厘公尺的細長直桿子上有n只螞蟻。它們的頭有的朝左,有的朝右。每只螞蟻都只能沿著桿子向前爬,速度是1厘公尺 秒。當兩隻螞蟻碰面時,它們會同時掉頭往相反的方向爬行。這些螞蟻中,有1只螞蟻感冒了。並且在和其它螞蟻碰面時,會把感冒傳染給碰到的螞蟻。請你計算,當所有...
第五屆藍橋杯C B組 螞蟻感冒
長100厘公尺的細長直桿子上有n只螞蟻。它們的頭有的朝左,有的朝右。每只螞蟻都只能沿著桿子向前爬,速度是1厘公尺 秒。當兩隻螞蟻碰面時,它們會同時掉頭往相反的方向爬行。這些螞蟻中,有1只螞蟻感冒了。並且在和其它螞蟻碰面時,會把感冒傳染給碰到的螞蟻。請你計算,當所有螞蟻都爬離桿子時,有多少只螞蟻患上了...
2014第五屆藍橋杯C B組第七題
第7題 六角填數 12 如圖所示六角形中,填入1 12的數字。使得每條直線上的數字之和都相同。圖中,已經替你填好了3個數字,請你計算星號位置所代表的數字是多少?請通過瀏覽器提交答案,不要填寫多餘的內容。思路就是暴力解決 藍橋杯還沒有時間限制 之間運用了stl的乙個函式 next permutatio...