(模拟 - 栈应用)1289 大鱼吃小鱼
1289 大鱼吃小鱼
- 1 秒
- 131,072 KB
- 5 分
- 1 级题
有N条鱼每条鱼的位置及大小均不同,他们沿着X轴游动,有的向左,有的向右。游动的速度是一样的,两条鱼相遇大鱼会吃掉小鱼。从左到右给出每条鱼的大小和游动的方向(0表示向左,1表示向右)。问足够长的时间之后,能剩下多少条鱼?
收起
输入
第1行:1个数N,表示鱼的数量(1 <= N <= 100000)。 第2 - N + 1行:每行两个数A[i], B[i],中间用空格分隔,分别表示鱼的大小及游动的方向(1 <= A[i] <= 10^9,B[i] = 0 或 1,0表示向左,1表示向右)。
输出
输出1个数,表示最终剩下的鱼的数量。
输入样例
5 4 0 3 1 2 0 1 0 5 0
输出样例
2
题解: 用栈存放 向右游动的鱼,当遇到向左游动的鱼时,判断栈顶元素与当前鱼的大小,小则 出栈,鱼数减一,大则鱼数减一,跳出。
#include<set>
#include<map>
#include<list>
#include<queue>
#include<stack>
#include<math.h>
#include<vector>
#include<bitset>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#define eps (1e-8)
#define MAX 0x3f3f3f3f
#define u_max 1844674407370955161
#define l_max 9223372036854775807
#define i_max 2147483647
#define re register
#define pushup() tree[rt]=tree[rt<<1]+tree[rt<<1|1]
#define nth(k,n) nth_element(a,a+k,a+n); // 将 第K大的放在k位
#define ko() for(int i=2;i<=n;i++) s=(s+k)%i // 约瑟夫
using namespace std;inline int read(){char c = getchar(); int x = 0, f = 1;while(c < '0' || c > '9') {if(c == '-') f = -1; c = getchar();}while(c >= '0' & c <= '9') x = x * 10 + c - '0', c = getchar();return x * f;
}typedef long long ll;
const double pi = atan(1.)*4.;
const int M=1e3+5;
const int N=1e6+5;
stack<int>ss;
int main(){int n,a,b;scanf("%d",&n);int ans=n;for(int i=0;i<n;i++){scanf("%d %d",&a,&b);if(b==1)ss.push(a);else {while(!ss.empty()){int g=ss.top();if(g<a){ans--;ss.pop();}else{ans--;break;}}}}printf("%d\n",ans);return 0;
}
(模拟 - 栈应用)1289 大鱼吃小鱼相关推荐
- 51nod - 1289 大鱼吃小鱼(栈)
思路: 向左走的可能会被向右走的吃,向右走的可能被向左的吃. 栈中存向右的小鱼. 如果当前鱼向左,则依次与栈顶鱼比较大小,如果能吃光则能存活:如果当前鱼向右,则加入栈. 最后栈中鱼的数量加上向左走存活 ...
- 51nod -1289 . 大鱼吃小鱼(思维)
1289 . 大鱼吃小鱼 题目来源: Codility 基准时间限制:1 秒 空间限制:65536 KB 分值: 5 有N条鱼每条鱼的位置及大小均不同,他们沿着X轴游动,有的向左,有的向右.游动的速度 ...
- 六、使用数组模拟栈的思路及代码实现
使用数组模拟栈的实现过程 1.栈的介绍 (1) 栈的英文为(stack) (2) 栈是一个先入后出(FILO-First In Last Out)的有序列表. (3) 栈(stack)是限制线性表中元 ...
- 第一回写的用arraylist模拟栈操作
package hashMap; import java.util.ArrayList; import d.Student; /*** 用ArrayList模拟栈操作* @author zhujiab ...
- 032_使用ArrayDeque模拟栈结构
import java.util.ArrayDeque; import java.util.Iterator;/*** 使用ArrayDeque模拟栈结构*/ public class DequeSt ...
- 数组模拟栈和队列板子
使用数组模拟数据结构栈和队列 栈:后进先出 对于栈:我们使用tt表示栈顶的下标,如果tt==0表示栈空 队列:先进先出 对于队列,我们使用hh表示队首,tt表示队尾,tt初始化为-1,判断队列是否为空 ...
- Leetcode402 remove-k-digits贪心+vector模拟栈的思想
题目 给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小. 注意: num 的长度小于 10002 且 ≥ k. num 不会包含任何前导零. 示例 1 : 输入: ...
- CCF-CSP 201903-2 二十四点 Python语言 模拟栈实现
项目场景: 二十四点问题本质是处理表达式,一提到处理表达式第一反应大概就是使用栈来处理,虽然网上大部分使用python语言处理二十四点问题都是利用强大的eval()函数,但我仍然想要使用python的 ...
- LinkedList 模拟栈和队列
LinkedList 比ArrayList 提供了更多的方法,其中有两个方法可以实现栈和队列的操作. removeFirst() 移除并返回此列表中的第一个元素. removeLast() 移除并返回 ...
最新文章
- BERT的通俗理解 预训练模型 微调
- Gzip 服务端压缩数据
- MySQL下优化SQL的一般步骤
- 9.0 C++远征:对象成员
- (转) Java线程同步阻塞, sleep(), suspend(), resume(), yield(), wait(), notify()
- 探索 YOLO v3 实现细节 - 第6篇 预测 (完结)
- ZOJ4100 浙江省赛16th Problem A
- 贷款审批到底会考核哪些内容?
- Linux Apache服务详解——用户个人主页实战
- Linux音频驱动-ALSA概述
- ps 显示当前进程的状态
- html滑动验证图片,js插件实现图片滑动验证码
- 嵌入式应用软件开发的步骤流程
- mingw32 编译 fastdb
- 怎么用c语言解三元二次方程组,三元二次方程组解法
- 路由器桥接LAN接LAN口(改DHCP以及详细避坑教程)
- 【Python】P2440 木材加工
- python爬虫和java爬虫哪个好_应用数据下载
- 几行代码教你爬取LOL皮肤图片
- 网络转型中的设备硬件形态选择初探