小明現在非常痴迷於玩一款益智遊戲,該遊戲有一種特殊的模式。每局開始有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 ...