日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

【51nod-1289】大鱼吃小鱼

發(fā)布時(shí)間:2023/12/10 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【51nod-1289】大鱼吃小鱼 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

題干:

有N條魚每條魚的位置及大小均不同,他們沿著X軸游動(dòng),有的向左,有的向右。游動(dòng)的速度是一樣的,兩條魚相遇大魚會(huì)吃掉小魚。從左到右給出每條魚的大小和游動(dòng)的方向(0表示向左,1表示向右)。問足夠長的時(shí)間之后,能剩下多少條魚?Input第1行:1個(gè)數(shù)N,表示魚的數(shù)量(1 <= N <= 100000)。?
第2 - N + 1行:每行兩個(gè)數(shù)A ii, B ii,中間用空格分隔,分別表示魚的大小及游動(dòng)的方向(1 <= A ii?<= 10^9,B ii?= 0 或 1,0表示向左,1表示向右)。Output輸出1個(gè)數(shù),表示最終剩下的魚的數(shù)量。Sample Input 5 4 0 3 1 2 0 1 0 5 0Sample Output 2


解題報(bào)告:

????用棧直接模擬,十分簡單。向右游的就入棧,向左游的就依次判斷出棧與否。如果棧為空并且來了一條往左游的魚,那就ans++,最后ans+棧中元素的個(gè)數(shù)就是答案。

????本題亦可以直接模擬,但是較繁瑣,有空可以一試。

ac代碼:

#include<iostream> #include<cstdio> #include<stack>using namespace std; int main() {stack< int > s;int n,x,d,flag;int ans=0;int top=0;scanf("%d",&n);for(int i = 1; i<=n; i++) { // printf("\n****************************8\n") ;flag=0;scanf("%d%d",&x,&d);if(s.empty() && d==0) {ans++;}else if(s.empty()&&d==1) {s.push(x);}else if( !s.empty() && d==1 ) {s.push(x);}else {while(!s.empty()) {top=s.top();if(top>x) {flag=1;//表示向左游的這個(gè)魚被吃掉了(就是 這魚不夠大 不足以吃掉所有的魚)。 break; }else s.pop();}if(flag==0) ans++; } }printf("%d\n",s.size()+ans);return 0 ; }


總結(jié)

以上是生活随笔為你收集整理的【51nod-1289】大鱼吃小鱼的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。