1580 大魚吃小魚(棧)

2021-09-12 04:00:19 字數 1083 閱讀 9853

有n條魚,在一條直線上移動。速度相同,兩條魚相遇大魚會吃掉小魚。

給出每條魚的初始位置,大小,移動方向

時間足夠長,最後還剩多少魚。

所有魚大小初始位置均不相同,位置5相對與位置2,5在2的右邊。

多組輸入,輸入到檔案結束,資料不超過100組。

每組資料第一行乙個整數n(1 <= n <= 1000),表示魚的數量

第二行n個整數用空格分隔,表示x_i(-10^9 <= x_i <= 10^9)

第三行n個整數用空格分隔,表示a_i(-10^9 <= a_i <= 10^9)

第四行n個整數用空格分隔,表示第i條魚的方向,0表示向左,1表示向右

每組資料輸出乙個整數佔一行表示答案。
複製

2

2 110 9

1 02

1 25 2

1 0

2

1

思路:簡單資料結構棧的處理(由於比賽時候把樣例看錯了導致沒寫出來)把魚按位置從小到大排序,遇到朝右游入棧,朝左遊就迴圈和棧頂比較,如果棧頂空了答案+1,最後答案再加上棧內剩餘資料數量。

#include #include #include#include#include#include#include#include#include #include#include#include#include#include#includeusing namespace std;

const double pi = acos(-1);

#define n 1005

struct node

ans[n];

bool cmp(node x,node y)

if(sum.empty())

++num;

}else

sum.push(ans[i].b);

}while(!sum.empty())

sum.pop(),++num;

cout<}

return 0;

}

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...