以前寫藍橋杯的時候不會寫,看了劉汝佳的uva 10881後發現好簡單
就是把螞蟻當作不會回頭,只是直接穿過
那麼兩個螞蟻穿過後就會讓另外乙隻也感冒
所以只需要判斷一下能穿過的螞蟻的數量
對於一開始感冒螞蟻的位置p,假設p>0
p會碰到右邊所有向左走的螞蟻,
那些在右邊被p碰到的螞蟻會去碰到它左邊所有向右走的螞蟻
結論(p>0):
1. ans+=p左邊與p正負相反的螞蟻數量
2.如果1的螞蟻存在,ans+=p右邊與p正負一樣的螞蟻
p<0結論也類似
ac**如下:
#include #include #include #include using namespace std;
int ant[50+5];
bool cmp(int i,int j){
return abs(i)>n){
int a;
for(int i=0;i0?1:-1;
for(int i=p+d;i=0;i+=d)
if(ant[i]*a<0) ok=true,ans++;
if(ok)
for(int i=p-d;i=0;i-=d)
if(ant[i]*a>0) ans++;
cout<
NYOJ990 螞蟻感冒
時間限制 1000 ms 記憶體限制 65535 kb 難度 2 描述 長100厘公尺的細長直桿子上有n只螞蟻。它們的頭有的朝左,有的朝右。每只螞蟻都只能沿著桿子向前爬,速度是1厘公尺 秒。當兩隻螞蟻碰面時,它們會同時掉頭往相反的方向爬行。這些螞蟻中,有1只螞蟻感冒了。並且在和其它螞蟻碰面時,會把感...
Nyoj 990 螞蟻感冒 思維)
時間限制 1000 ms 記憶體限制 65535 kb 難度 2 描述 長100厘公尺的細長直桿子上有n只螞蟻。它們的頭有的朝左,有的朝右。每只螞蟻都只能沿著桿子向前爬,速度是1厘公尺 秒。當兩隻螞蟻碰面時,它們會同時掉頭往相反的方向爬行。這些螞蟻中,有1只螞蟻感冒了。並且在和其它螞蟻碰面時,會把感...
藍橋杯 螞蟻感冒
時間限制 1 sec 記憶體限制 128 mb 長100厘公尺的細長直桿子上有n只螞蟻。它們的頭有的朝左,有的朝右。每只螞蟻都只能沿著桿子向前爬,速度是1厘公尺 秒。當兩隻螞蟻碰面時,它們會同時掉頭往相反的方向爬行。這些螞蟻中,有1只螞蟻感冒了。並且在和其它螞蟻碰面時,會把感冒傳染給碰到的螞蟻。請你...