1289大魚吃小魚(STL中棧的應用)

2022-05-01 13:27:12 字數 933 閱讀 7797

》點選進入測試《

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

input

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

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

output

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

5

4 03 1

2 01 0

5 0

output示例

2

思路:這個題思路還是比較活的,我在想之所以放在一級演算法是不是因為這個題暴力也能解。

這個題我是這樣想的,往右走的魚就把它壓入棧中,知道碰見往左走的魚,然後與棧中的魚比較,知道碰見比往左走的魚大的或者全部比較完,棧為空則那支左走魚還活著,記錄往左走還活下來的魚的數量;

全部資料進行完之後,棧中的魚也都是活下來的魚。最後相加輸出。運用stl中的stack就很好寫了

#include#include

#include

#include

#include

using

namespace

std;

intmain()

if(sta.empty())

}else

sta.push(size);

}sum +=sta.size();

cout

<< sum

}

1289 大魚吃小魚

1289 大魚吃小魚 codility 基準時間限制 1 秒 空間限制 131072 kb 分值 5 難度 1級演算法題 有n條魚每條魚的位置及大小均不同,他們沿著x軸游動,有的向左,有的向右。游動的速度是一樣的,兩條魚相遇大魚會吃掉小魚。從左到右給出每條魚的大小和游動的方向 0表示向左,1表示向右...

1289 大魚吃小魚

基準時間限制 1 秒 空間限制 131072 kb 分值 5 難度 1級演算法題 有n條魚每條魚的位置及大小均不同,他們沿著x軸游動,有的向左,有的向右。游動的速度是一樣的,兩條魚相遇大魚會吃掉小魚。從左到右給出每條魚的大小和游動的方向 0表示向左,1表示向右 問足夠長的時間之後,能剩下多少條魚?i...

1289 大魚吃小魚

基準時間限制 1 秒 空間限制 131072 kb 分值 5 難度 1級演算法題 有n條魚每條魚的位置及大小均不同,他們沿著x軸游動,有的向左,有的向右。游動的速度是一樣的,兩條魚相遇大魚會吃掉小魚。從左到右給出每條魚的大小和游動的方向 0表示向左,1表示向右 問足夠長的時間之後,能剩下多少條魚?i...