螞蟻感冒 思維

2021-10-02 16:52:48 字數 1220 閱讀 1974

問題 1454: [藍橋杯][歷屆試題]螞蟻感冒

時間限制: 1sec 記憶體限制: 128mb 提交: 1623 解決: 687

題目描述

長100厘公尺的細長直桿子上有n只螞蟻。它們的頭有的朝左,有的朝右。

每只螞蟻都只能沿著桿子向前爬,速度是1厘公尺/秒。

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

這些螞蟻中,有1只螞蟻感冒了。並且在和其它螞蟻碰面時,會把感冒傳染給碰到的螞蟻。

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

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

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

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

樣例輸入

5 

-10 8 -20 12 25

樣例輸出

3
思路:

螞蟻碰面後再都掉頭反方向走,是不是相當於兩隻螞蟻不掉頭繼續走?因為這兩隻螞蟻一樣啊,都感冒或者是不感冒!

就相當永不掉頭的情況。

只需要特判同乙個方向的情況,為1.

然後只要判斷a1和ai的情況,就可以了。

**:

#include#include#define rep(i,a,b) for(int i=a;i<=b;i++)

#define dep(i,a,b) for(int i=a;i>=b;i--)

#define ll long long

#include#include#include#includeusing namespace std;

const int maxn=100+6;

#define mod 1000000007

#define inf 0x3f3f3f3f

int a[maxn];

int vis[maxn];

int vis2[maxn];

int main()

if(ans==n-1)

ans=1;

else

}cout

//20 4 -3 -10 -22

}

螞蟻感冒(思維)

x 國的乙個網路使用若干條線路連線若干個節點。節點間的通訊是雙向的。某重要資料報,為了安全起見,必須恰好被 兩次到達目的地。該包可能在任意乙個節點產生,我們需要知道該網路中一共有多少種不同的 路徑。源位址和目標位址可以相同,但中間節點必須不同。如下圖所示的網路。1 2 3 1 是允許的 1 2 1 ...

思維 螞蟻感冒

螞蟻的問題都有相似性 從相遇等同於擦肩而過開始推導 如果第一只螞蟻是正值 那麼他後面所有負值螞蟻都會和他碰面 如果有的話 那麼這些螞蟻肯定會和他背後所有和正值的螞蟻碰面 同理 負值也如此 include using namespace std const int maxn 1e5 10 int ar...

歷屆試題 螞蟻感冒 (思維)

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