思路:

向左走的可能会被向右走的吃,向右走的可能被向左的吃。

栈中存向右的小鱼。

如果当前鱼向左,则依次与栈顶鱼比较大小,如果能吃光则能存活;如果当前鱼向右,则加入栈。

最后栈中鱼的数量加上向左走存活的数量就是所有能存活的。

#include<iostream>
#include<cstdio>
#include<stack>
using namespace std;
int main(void)
{int n, a, b;while(cin >> n){int ans = 0;stack<int> s;while(!s.empty()) s.pop();for(int i = 0; i < n; i++){scanf("%d%d", &a, &b);if(!b){while(!s.empty() && s.top() < a) s.pop();if(s.empty()) ans++;}else s.push(a);}printf("%d\n", ans+s.size());}return 0;
}
1289 大鱼吃小鱼
题目来源:  Codility
基准时间限制:1 秒 空间限制:131072 KB 分值: 5  难度:1级算法题

 收藏
 关注

有N条鱼每条鱼的位置及大小均不同,他们沿着X轴游动,有的向左,有的向右。游动的速度是一样的,两条鱼相遇大鱼会吃掉小鱼。从左到右给出每条鱼的大小和游动的方向(0表示向左,1表示向右)。问足够长的时间之后,能剩下多少条鱼?
Input
第1行:1个数N,表示鱼的数量(1 <= N <= 100000)。
第2 - N + 1行:每行两个数A[i], B[i],中间用空格分隔,分别表示鱼的大小及游动的方向(1 <= A[i] <= 10^9,B[i] = 0 或 1,0表示向左,1表示向右)。
Output
输出1个数,表示最终剩下的鱼的数量。
Input示例
5
4 0
3 1
2 0
1 0
5 0
Output示例
2

51nod - 1289 大鱼吃小鱼(栈)相关推荐

  1. 51Nod 1289 大鱼吃小鱼 栈的简单模拟

    传送门:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1289 emmmmmm-- 大概就是--①栈空:向左右,最终必然 ...

  2. 51nod -1289 . 大鱼吃小鱼(思维)

    1289 . 大鱼吃小鱼 题目来源: Codility 基准时间限制:1 秒 空间限制:65536 KB 分值: 5 有N条鱼每条鱼的位置及大小均不同,他们沿着X轴游动,有的向左,有的向右.游动的速度 ...

  3. 51nod 1289 大鱼吃小鱼

    有N条鱼每条鱼的位置及大小均不同,他们沿着X轴游动,有的向左,有的向右.游动的速度是一样的,两条鱼相遇大鱼会吃掉小鱼.从左到右给出每条鱼的大小和游动的方向(0表示向左,1表示向右).问足够长的时间之后 ...

  4. 51Nod - 1289 大鱼吃小鱼

    有N条鱼每条鱼的位置及大小均不同,他们沿着X轴游动,有的向左,有的向右.游动的速度是一样的,两条鱼相遇大鱼会吃掉小鱼.从左到右给出每条鱼的大小和游动的方向(0表示向左,1表示向右).问足够长的时间之后 ...

  5. (模拟 - 栈应用)1289 大鱼吃小鱼

    1289 大鱼吃小鱼 1 秒 131,072 KB 5 分 1 级题 有N条鱼每条鱼的位置及大小均不同,他们沿着X轴游动,有的向左,有的向右.游动的速度是一样的,两条鱼相遇大鱼会吃掉小鱼.从左到右给出 ...

  6. 1289 大鱼吃小鱼

    1289 大鱼吃小鱼 基准时间限制:1 秒 空间限制:131072 KB 有N条鱼每条鱼的位置及大小均不同,他们沿着X轴游动,有的向左,有的向右.游动的速度是一样的,两条鱼相遇大鱼会吃掉小鱼.从左到右 ...

  7. 51 Nod 1289 大鱼吃小鱼

    1289 大鱼吃小鱼  题目来源: Codility 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题  收藏  关注 有N条鱼每条鱼的位置及大小均不同,他们沿着X轴游 ...

  8. 51Nod 1289:大鱼吃小鱼(模拟, 栈)

    https://www.51nod.com/Challenge/Problem.html#!#problemId=1289 有N条鱼每条鱼的位置及大小均不同,他们沿着X轴游动,有的向左,有的向右.游动 ...

  9. 51nod 3199 操作栈

    题目 有一个初始为空的栈,我们对这个队列进行n次操作,操作共分为2种: 1 x(将数字 x 放入栈) 2(将栈顶元素弹出) 对于第2种操作,你需要把弹出的这个数字输出,如果进行操作2时,队列为空,则输 ...

最新文章

  1. 推荐一款常用的IDE插件,越用越喜欢
  2. memcached简介(转)
  3. .net序列化与反序列化通用方法
  4. java-垃圾回收的并行与并发
  5. ROS+Turtlebot3+RVIZ 显示机器人历史轨迹方法
  6. LibLinear(SVM包)使用说明之(二)MATLAB接口
  7. Python学习笔记——变量和字符串
  8. matplotlib之subplot和动态作图(笔记六)
  9. oracle锁类型tx,Oracle中的锁类型
  10. hdu acm 1010
  11. 企业数据架构和集成架构规划方案(PPT)
  12. 百家讲坛 黄帝内经(第一部)
  13. 强烈推荐一款好用的API接口
  14. 如何在Ubuntu MATE 18.04中安装GNOME 3?
  15. ESP32的SDK开发之获取SNTP网络时间
  16. matplotlib常用绘图风格
  17. 服务器攻击方式与查看服务器攻击日志的方法
  18. 《三体》里的超级计算机_我们今天能造出来吗?
  19. FFmpeg的HEVC解码器源代码简单分析:CTU解码(CTU Decode)部分-PU
  20. 京东区块链(智臻链):1. 应用场景

热门文章

  1. Eclipse启动慢解决方案
  2. python lncrna_LncRNA生信分析案例
  3. ACM模板(满注释模板!)
  4. 谈宇宙尽头及维度空间的关系
  5. JQ ajax 循环 table遍历 .net
  6. 自动化测试(一)基本介绍——测试框架的分类 单元测试工具 E2E测试工具
  7. python怎么输入多维数组_Python的多维空数组赋值方法
  8. WindowsPhone之我见
  9. linux用户随机密码,Linux面试题-批量添加用户并设置8位随机密码
  10. 使用setsockopt实现端口复用