树状数组,二分。

一堆数字,可以删除栈顶,压入数字,求中位数,可以线段树,也可以树状数组上二分。

#include<map>
#include<set>
#include<ctime>
#include<cmath>
#include<queue>
#include<string>
#include<stack>
#include<vector>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<functional>
using namespace std; stack<int>S;
int n; char op[]; int c[]; int lowbit(int x)
{
return x&(-x);
} int get(int p)
{
int res=;
while(p>)
{
res=res+c[p];
p=p-lowbit(p);
}
return res;
} void update(int p,int val)
{
while(p<=)
{
c[p]=c[p]+val;
p=p+lowbit(p);
}
} int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
{
scanf("%s",op);
if(strcmp(op,"Pop")==)
{
if(S.empty()) printf("Invalid\n");
else
{
printf("%d\n",S.top());
update(S.top(),-); S.pop();
}
}
else if(strcmp(op,"Push")==)
{
int x; scanf("%d",&x);
S.push(x);
update(x,);
}
else
{
if(S.size()==)
{
printf("Invalid\n");
continue;
}
int limit = (S.size()+)/;
int L=,R=,p=-; while(L<=R)
{
int mid = (L+R)/;
if(get(mid)>=limit) p=mid,R=mid-;
else L=mid+;
} printf("%d\n",p);
}
}
return ;
}

PAT L3-002. 堆栈的更多相关文章

  1. pat 甲级 L3-002. 堆栈

    L3-002. 堆栈 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 大家都知道“堆栈”是一种“先进后出”的线性结构,基本操作有 ...

  2. PAT L3-002: 堆栈(线段树)

    https://www.patest.cn/contests/gplt/L3-002 题意:中文题意. 思路:因为所有数<=1e5,权值线段树维护每个数出现多少次,然后每次出栈入栈都更新权值就好 ...

  3. PAT天梯赛练习题 L3-010. 是否完全二叉搜索树(完全二叉树的判断)

    L3-010. 是否完全二叉搜索树 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 将一系列给定数字顺序插入一个初始为空的二叉搜 ...

  4. PAT天梯赛练习题 L3-002. 堆栈(线段树查询第K大值或主席树)

    L3-002. 堆栈 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 大家都知道“堆栈”是一种“先进后出”的线性结构,基本操作有 ...

  5. PAT甲题题解-1051. Pop Sequence (25)-堆栈

    将1~n压入最多为m元素的栈 给出k个出栈序列,问你是否能够实现. 能输出YES 否则NO 模拟一遍即可,水题. #include <iostream> #include <cstd ...

  6. Day 002:PAT练习--1021 个位数统计 (15 分)

      话不多说,看题目:   显而易见,这道题用map实现非常的方便,(才不是,其实还有更简单的办法,但是我觉得写那种代码实在没什么意义,再加上正好借此练习一下map)我的代码如下: #include& ...

  7. 《转载》PAT 习题

    博客出处:http://blog.csdn.net/zhoufenqin/article/details/50497791 题目出处:https://www.patest.cn/contests/pa ...

  8. GDB调试汇编堆栈

    GDB调试汇编堆栈 分析过程 C语言源代码 int g(int x) { return x+6; } int f(int x) { return g(x+1); } int main(void) { ...

  9. [反汇编练习] 160个CrackMe之002

    [反汇编练习] 160个CrackMe之002. 本系列文章的目的是从一个没有任何经验的新手的角度(其实就是我自己),一步步尝试将160个CrackMe全部破解,如果可以,通过任何方式写出一个类似于注 ...

随机推荐

  1. j2ee 项目部署指引

    j2ee相关的项目一般是web工程或java application,部署到linux服务器上,本文结合自己的经验.教训,总结下部署的过程. 一.准备阶段 部署前要做的事情: 1.明确自己的产品都包含 ...

  2. echarts 使用demo

    <!DOCTYPE html> <head> <meta charset="utf-8"> <title>ECharts</t ...

  3. 11.nginx upload module + python django 后台 实现视频上传与切片

    1.需求:支持视频上传并切片,支持通过m3u8文件播放 2.视频切片的上一节已经谈过,这一节主要是视频上传的处理 第一步:upload-module模块安装 -----------首先下载upload ...

  4. AWK文本分析工具-常用场景(持续更新中)

    AWK help document:http://www.gnu.org/software/gawk/manual/gawk.html 问题 awk命令 备注 对请求IP统计分组排序?     显示列 ...

  5. SQL Server Delete Duplicate Rows

    There can be two types of duplication of rows in a table 1. Entire row getting duplicated because th ...

  6. JAVA list 列表 字典 dict

    import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import java.util.Set; pu ...

  7. 27、简述redis的有哪几种持久化策略及比较?

    Redis 提供了多种不同级别的持久化方式: RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot). AOF 持久化记录服务器执行的所有写操作命令 ...

  8. js获取屏幕高度宽度

    获取各种屏幕的宽度和高度Javascript: 网页可见区域宽: document.body.clientWidth网页可见区域高: document.body.clientHeight网页可见区域宽 ...

  9. fundamentals of the jQuery library

    1.why is jquery Only 32kB minified and gzipped. Can also be included as an AMD module Supports CSS3 ...

  10. •搭建LAMP环境及快速部署双网站并实现基于域名的虚拟主机

    本节所讲内容: 实战:搭建LAMP环境及快速部署双网站并实现基于域名的虚拟主机 LAMP架构:??? Linux+Apache+Mysql+PHP Linux+Apache+Mysql/MariaDB ...