题目链接:http://acm.ecnu.edu.cn/contest/16/problem/F/

题目:

  

F. 蚂蚁

Time limit per test: 0.5 seconds

Time limit all tests: 5.0 seconds

Memory limit: 256 megabytes

Accept / Submit: 112 / 336

水平线上有 N 只蚂蚁,每只蚂蚁的位置及大小均不同。他们沿着 X 轴爬行,有的向左,有的向右,爬行的速度是一样的,两只蚂蚁相遇大一点的会吃掉小的。

现在从左到右给出每只蚂蚁的大小和爬行的方向(0 表示向左,1 表示向右)。问足够长的时间之后,能剩下多少只蚂蚁?

Input

第 1 行:一个整数 N,表示蚂蚁的数量 (1≤N≤105)。

第 2 到 N+1 行:每行两个数 Ai,Bi (1≤Ai≤109,Bi∈{0,1}),中间用空格分隔,分别表示蚂蚁的大小及爬
行的方向,Bi=0 表示向左,Bi=1 表示向右。

对于 3/8 的数据,存在 x 满足:所有坐标比 x 小的蚂蚁向左爬、坐标比 x 大的蚂蚁向右爬;或者所有坐标比 x 小的蚂蚁向右爬、坐标比 x 大的蚂蚁向左爬。

Output

输出最终剩下的蚂蚁的数量。

Examples

input
5
4 0
3 1
2 0
1 0
5 0
output
2

题解:

  可以通过简单的栈模拟,对于向左走的蚂蚁如果没有向右走的蚂蚁直接加入进栈,如果有,则比较大小,向左的蚂蚁大吃掉向右走的蚂蚁(pop),否则是被吃掉。

  对于向右走的直接加入栈中。

 #include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <string>
#include <vector>
#include <map>
#include <set>
#include <stack>
#include <queue>
#include <sstream>
#include <algorithm>
using namespace std;
#define pb push_back
#define mp make_pair
#define ms(a, b) memset((a), (b), sizeof(a))
#define eps 0.0000001
typedef long long LL;
typedef unsigned long long ULL;
const int inf = 0x3f3f3f3f;
const LL INF = 0x7fffffff;
const int maxn = 1e5+;
const int mod = 1e9+;
int a[maxn];
int b[maxn];
void init() { }
void solve() {
int n, k, ans = ;
scanf("%d", &n);
stack<int>s0;
stack<int>s1;
for(int i = ;i<=n;i++){
scanf("%d%d", &a[i], &b[i]);
if(b[i] == ){
while(!s1.empty()&&a[i] > s1.top()){
s1.pop();
}
if(s1.empty()){
s0.push(a[i]);
}
}
else{
s1.push(a[i]);
}
}
printf("%d\n", s0.size()+s1.size());
}
int main() {
#ifdef LOCAL
freopen("input.txt", "r", stdin);
// freopen("output.txt", "w", stdout);
#endif // LOCAL solve(); return ;
}

你努力的时候,比你厉害的人也在努力。

第九届ECNU Coder F.蚂蚁(栈)的更多相关文章

  1. 第九届ECNU Coder K.计软联谊

    题目链接:http://acm.ecnu.edu.cn/contest/16/problem/K/ 题目: K. 计软联谊 Time limit per test: 7.0 seconds Time ...

  2. 第九届ECNU Coder A.足球锦标赛

    题目链接:http://acm.ecnu.edu.cn/contest/16/problem/A/ 题目: A. 足球锦标赛 Time limit per test: 2.0 seconds Time ...

  3. 华东师范大学第十届ECNU Coder程序设计竞赛

    华东师范大学第十届ECNU Coder程序设计竞赛 浮点数模运算 solution 转成整数然后取模. 时间复杂度:\(O(1)\) 数螃蟹 solution 找出公差出现次数最多的作为公差,然后找出 ...

  4. Manthan, Codefest 18 (rated, Div. 1 + Div. 2) F 单调栈 + 贡献 + 计数

    https://codeforces.com/contest/1037/problem/F 题意 function z(array a, integer k): if length(a) < k ...

  5. F. 蚂蚁装修

    单点时限: 2.0 sec 内存限制: 512 MB 还有一个月就开学了,爱学习的小蚂蚁想庆祝一下!于是它要把它的“家”装修一下.首先要做的就是贴地板.小蚂蚁“家”的地面可以看成一个2∗N 的方格 , ...

  6. openssl stack 数据结构栈基本操作

    堆栈是两种不同的数据结构: 堆:数据先进先出: 栈:数据先进后观: 在stack.h 中 openssl 为我们提供了一个通用的栈,利用提供的接口我们可以方便的用此栈来存放开发中的任意数据. open ...

  7. C语言实现链栈

    我自己写的代码部分: #include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct ...

  8. c#栈的习题2

    —.单项选择题1.栈和队列具有相同的(    ). A.抽象数据类型     B.逻辑结构     C.存储结构     D.运算2.栈是(). A.顺序存储的线性结构     B.链式存储的非线性结 ...

  9. js执行上下文栈和变量对象

    JavaScript执行上下文栈和变量对象 JS是单线程的语言,执行顺序肯定是顺序执行,但是JS 引擎并不是一行一行地分析和执行程序,而是一段一段地分析执行,会先进行编译阶段然后才是执行阶段. 例子一 ...

随机推荐

  1. [Git] 009 逆转未来

    1. 想逆转未来,得先知道时间线 1.1 git log 1.2 git log --oneline 此命令的显示结果比 git log 简洁 1.3 git reflog 此命令显示的记录比前两者完 ...

  2. SQL查询结果增加序列号

    SQL查询记录中增加序列号 根据学生成绩在查询结果中增加排名字段: 1.SELECT ROW_NUMBER() OVER (ORDER BY SCORE ASC) AS RANK,NAME,SCORE ...

  3. Spring Cloud部署+Mybatis整合

    一:架构简介 Spring Cloud是微服务思想的体现.每个项目单独部署,我只需要知道你服务的name就能直接调用你,而不关心你的ip和端口的变化.当接口服务不可用的时候,我能感知到你无法用了,就不 ...

  4. Atlantis poj1151 线段树扫描线

    Atlantis poj1151 线段树扫描线 题意 题目给了n个矩形,每个矩形给了左下角和右上角的坐标,矩形可能会重叠,求的是矩形最后的面积. 题解思路 这个是我线段树扫描线的第一题,听了学长的讲解 ...

  5. 小白学Python(18)——pyecharts 关系图 Graph

    Graph-基本示例 import json import os from pyecharts import options as opts from pyecharts.charts import ...

  6. React手稿 - Context

    Context Context提供了除props之外的传参数的方式. Context是全局跨组件传递数据的. API React.createContext ``` const {Provider, ...

  7. jmeter性能测试遇到的问题

    1.出现socket closed问题: 修改方式: 问题原因:在JMeter下,发送http 请求时,一般都是默认选择了use keepAlive(这个是什么?看后面资料),这个是连接协议,JMet ...

  8. more - 在显示器上阅读文件的过滤器

    总览 (SYNOPSIS) more [-dlfpcsu ] [-num ] [+/ pattern] [+ linenum] [file ... ] 描述 (DESCRIPTION) More 是 ...

  9. Oracle Set操作

    并集合 union/uinon all union 会去重,uinon all 不去重 交集 intersect 差集 minus

  10. golang test模块

    1 创建文件夹testing101 2 被测试程序 package testing101 func Sum(numbers []int) int { sum :=0 for _,n :=range n ...