有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
思路:模拟栈的操作,在栈为空的情况下,向左的鱼不做记录,向右的鱼记录,再次遇到向左的则吃,直到栈空或被吃。
为什么要记录向右的鱼?
分两种情况:
(1)记录向左的鱼,这时会发现,若之前的鱼向右而又没有记录,此时一个向左一个向右是相向而行的,不能进行比较,因此不能记录向左的鱼。
(2)记录向右的鱼,这时就算之前有相邻向左的鱼没有记录,由于一个向左一个向右相背而行也是不会相遇的,因此记录向右的鱼。
注意点:定义数组时一定要注意题目中的范围,不然会出现Runtime error 这种错误。
代码:

#include<stdio.h>
#include<stdlib.h>
#include<algorithm>
#include<iostream>
using namespace std;
int main()
{long long a[100002];int b[100002];long long  c[100002];int n,i;int top=-1;cin>>n;int m=n;for(i=0;i<n;i++)cin>>a[i]>>b[i];for(i=0;i<n;i++){if(b[i]==1){top++;c[top]=a[i];}else{while(top!=-1)//当栈不空时{if(a[i]>c[top]){m--;top--;}else{m--;break;}}}}cout<<m<<endl;
}

51nod大鱼吃小鱼问题相关推荐

  1. 51nod大鱼吃小鱼

    https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1289 1289 大鱼吃小鱼  题目来源: Codility 基准时间限 ...

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

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

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

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

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

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

  5. 51nod - 1289 大鱼吃小鱼(栈)

    思路: 向左走的可能会被向右走的吃,向右走的可能被向左的吃. 栈中存向右的小鱼. 如果当前鱼向左,则依次与栈顶鱼比较大小,如果能吃光则能存活:如果当前鱼向右,则加入栈. 最后栈中鱼的数量加上向左走存活 ...

  6. 51nod 1289 大鱼吃小鱼

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

  7. 51Nod-1289-大鱼吃小鱼

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

  8. 51Nod - 1289 大鱼吃小鱼

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

  9. 51nod 1617 奇偶数组

    传送门 回来看一眼51nod,发现自己掉到rank4了,赶紧切道题回rank3. 一眼不会做,这种东西应该慢慢找规律吧--然后看到数据范围其实比较小,应该是单次log的,那是不是可以分治啊. #inc ...

最新文章

  1. python3中的单例模式Singleton
  2. 苹果Mac Mini 高配版 M1X 或将于数月后发售
  3. 较为周全的Asp.net提交验证方案 (下)
  4. 95-38-045-Buffer-UnpooledByteBuf
  5. delphi 发送网络消息_Actor 消息的可靠交付(Akka Typed)
  6. ListView使用BaseAdapter与ListView的优化
  7. 红帽发布虚拟化策略 产品即将上市
  8. AcWing 1922. 懒惰的牛(前缀和 or 双指针)
  9. java 删除指定文件夹和下面所有文件_JAVA语言基础
  10. 如何在线查看.mmap格式文件
  11. Android 签名文件
  12. 【Unity项目实战】手把手教学:飞翔的小鸟(1)导入素材
  13. 推荐9个强大的谷歌插件,程序猿必备!不看后悔系列!
  14. 学会如何带领一个团队
  15. 电力相关的中文期刊查找
  16. ERROR ITMS-90096
  17. linux 网络问题 ipv4 forwarding
  18. Uncaught SyntaxError The requested module ‘node_modules.vitevue.jsv=bd1817bb‘ does not provide
  19. PDF文件如何提取页面,PDF提取页面的小技巧
  20. 腐蚀rust服务器命令_腐蚀Rust游戏指令大全 全游戏指令一览

热门文章

  1. python的单行注释以什么开头_python中单行注释以什么开头,
  2. Fractions (水)
  3. 【读书笔记】减法——完美无缺,不是增无可增,而是减无可减
  4. Chrome 谷歌浏览器 闪黑屏 问题
  5. 关于打印机打印网页出现字迹显示不全的问题心得
  6. Pooling Revisited: Your Receptive Field is Suboptimal 论文解读和感想
  7. win10 C盘清理总结记录
  8. D-LINK DIR823PRO 路由器更新固件为openwrt-18.06.1 支持802.11s组建mesh
  9. *** Cisco路由器
  10. 穆利堂[推荐]河南郑州房地产CRM管理系统软件整体解决方案.穆穆-movno1