51Nod 1289 大魚吃小魚(棧)

2021-10-07 12:53:03 字數 1323 閱讀 1650

小明現在非常痴迷於玩一款益智遊戲,該遊戲有一種特殊的模式。每局開始有n位角色,每位遊戲角色的位置及血量都不相同。每個角色可以沿著x軸固定方向移動,即向左或者向右移動,移動的速度都是一樣的。兩名角色相遇血量多的角色會擊敗血量少的角色,然後勝利的角色會恢復滿血。現在從左到右給出每個角色的血量和移動的方向(0表示向左移動,1表示向右移動)。小明需要回答的是過了足夠長的時間後能剩下多少個角色?

input

輸入包含n+1行

第1行乙個數n,表示角色的數量 (1<=n<=100,000)。

第2~n+1行每行兩個由空格分隔的數x(1<=x<=10^9)和p(0或1),表示角色的血量及移動的方向。

output

輸出一行數字表示答案。

sample input

540

3120

1050

sample output

2
思路:

首先恢復滿血不是所有的都恢復到同一狀態,而是恢復到輸入時的狀態,我就是錯在這個地方,剩下的用棧來模擬下就可以了,這個題符合後進先出的特點,就是相鄰之間進行比較

**:

#include

#include

#include

#include

#include

#include

using

namespace std;

typedef

long

long

int ll;

const ll n=

1e9+

1000

;ll n,m;

struct node

;stack s;

intmain()

else

if(a.p==

1&&b.p==0)

else

//只有乙個向左另乙個向右才可能相遇,而且相對行駛,而不是相向而行

else

//打不贏也停止 if(

!s.empty()

)b=s.

top();

}if(flag)s.

push

(a);}}

cout

;return0;

}

歡迎提問不會的地方

51NOD 1289 大魚吃小魚 (棧)

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

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