》點選進入測試《
有n條魚每條魚的位置及大小均不同,他們沿著x軸游動,有的向左,有的向右。游動的速度是一樣的,兩條魚相遇大魚會吃掉小魚。從左到右給出每條魚的大小和游動的方向(0表示向左,1表示向右)。問足夠長的時間之後,能剩下多少條魚?
input
第1行:1個數n,表示魚的數量(1 <= n <= 100000)。output第2 - n + 1行:每行兩個數a[i], b[i],中間用空格分隔,分別表示魚的大小及游動的方向(1 <= a[i] <= 10^9,b[i] = 0 或 1,0表示向左,1表示向右)。
輸出1個數,表示最終剩下的魚的數量。input示例
5output示例4 03 1
2 01 0
5 0
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...