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

2021-08-16 01:21:51 字數 1751 閱讀 9306

時間限制:1.0s 記憶體限制:256.0mb

問題描述

長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分析:

此題是poj 1852的變形, 當螞蟻相遇時,若某只螞蟻患有感冒,就傳染給對方,並且兩隻螞蟻都反向爬。 在這裡分析得到可以無視螞蟻的區別。

code:

#include 

using

namespace

std;

#define mem(a,n) memset(a,n,sizeof(a))

#define memc(a,b) memcpy(a,b,sizeof(b))

#define rep(i,a,n) for(int i=a;i///[a,n)

#define dec(i,n,a) for(int i=n;i>=a;i--)///[n,a]

#define pb push_back

#define fi first

#define se second

#define io ios::sync_with_stdio(false)

#define fre freopen("in.txt","r",stdin)

#define lson l,m,rt<<1

#define rson m+1,r,rt<<1|1

typedef

long

long ll;

typedef

unsigned

long

long ull;

const

double pi=acos(-1.0);

const

double e=2.718281828459045;

const

double eps=1e-3;

const

int inf=0x3f3f3f3f;

const

int mod=1e9+7;

const

int n=50+5;

const ll maxn=1e6+5;

const

int dir[4][2]= ;

int n,a[n];

int main()

printf("%d\n",cnt+1);

}else

///a[1]>0

}rep(i,2,n+1)

}printf("%d\n",cnt+1);}}

return

0;}

歷屆試題 螞蟻感冒

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

歷屆試題 螞蟻感冒

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

歷屆試題 螞蟻感冒

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