51Nod 1289 大魚吃小魚(模擬, 棧)

2022-09-18 16:42:09 字數 1160 閱讀 6374

有n條魚每條魚的位置及大小均不同,他們沿著x軸游動,有的向左,有的向右。游動的速度是一樣的,兩條魚相遇大魚會吃掉小魚。從左到右給出每條魚的大小和游動的方向(0表示向左,1表示向右)。問足夠長的時間之後,能剩下多少條魚?

第1行:1個數n,表示魚的數量(1 <= n <= 100000)。

第2 - n + 1行:每行兩個數a[i], b[i],中間用空格分隔,分別表示魚的大小及游動的方向(1 <= a[i] <= 10^9,b[i] = 0 或 1,0表示向左,1表示向右)。

輸出1個數,表示最終剩下的魚的數量。
5

4 03 1

2 01 0

5 0

2
如果魚的頭是向右的就把魚入棧,如果魚頭向左,就讓它向左走吃魚直到被吃或者走的盡頭。

#include#define n 100020

int a[n];

int main()

else

}} printf("%d\n",sum+len-1);

return 0;

}

一道相似的題目:

現在有n個數字依次進入乙個棧,每個數字a進入棧的時候,如果棧頂元素小於a,則會將棧頂元素彈出,新的棧頂元素如果仍然小於a,則會將新的棧頂元素繼續彈出,直到棧頂元素大於等於a為止,a才會加入棧。問n個數字依次進入後,最後棧裡的數字依次是?

輸入第一行乙個整數n(n<=100000),表示有n個數字依次進入棧。

接下來n行,每行乙個整數,表示第i個數字。

若干行,表示最後棧中的數字。
553

2 41

5

41

#include#define n 100020

int a[n];

int main()

} if(j==0)

a[1]=num;

i=j+1;

} for(j=1;j<=i;j++)

printf("%d\n",a[j]);

}

51nod 1289 大魚吃小魚

題目 有n條魚每條魚的位置及大小均不同,他們沿著x軸游動,有的向左,有的向右。游動的速度是一樣的,兩條魚相遇大魚會吃掉小魚。從左到右給出每條魚的大小和游動的方向 0表示向左,1表示向右 問足夠長的時間之後,能剩下多少條魚?input 第1行 1個數n,表示魚的數量 1 n 100000 第2 n 1...

51NOD 1289 大魚吃小魚

1289 大魚吃小魚 題目鏈結 題目有n條魚每條魚的位置及大小均不同,他們沿著x軸游動,有的向左,有的向右。游動的速度是一樣的,兩條魚相遇大魚會吃掉小魚。從左到右給出每條魚的大小和游動的方向 0表示向左,1表示向右 問足夠長的時間之後,能剩下多少條魚?input 第1行 1個數n,表示魚的數量 1 ...

51nod 1289 大魚吃小魚

1289 大魚吃小魚 有n條魚每條魚的位置及大小均不同,他們沿著x軸游動,有的向左,有的向右。游動的速度是一樣的,兩條魚相遇大魚會吃掉小魚。從左到右給出每條魚的大小和游動的方向 0表示向左,1表示向右 問足夠長的時間之後,能剩下多少條魚?input 第1行 1個數n,表示魚的數量 1 n 10000...