首页 > 其他分享 >天梯赛练习题 L3-002 特殊堆栈(stl)

天梯赛练习题 L3-002 特殊堆栈(stl)

时间:2023-03-23 21:24:15浏览次数:49  
标签:练习题 const PeekMedian stl LL Pop 002 vector Push

https://pintia.cn/problem-sets/994805046380707840/exam/problems/994805053695574016

输入样例:
17
Pop
PeekMedian
Push 3
PeekMedian
Push 2
PeekMedian
Push 1
PeekMedian
Pop
Pop
Push 5
Push 4
PeekMedian
Pop
Pop
Pop
Pop
输出样例:
Invalid
Invalid
3
2
2
1
2
4
4
5
3
Invalid
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair<LL,LL> PII;
const LL MAXN=1e18,MINN=-MAXN;
const LL N=2e6+10,M=4004;
const LL mod=100000007;
const double PI=3.1415926535;
#define endl '\n'
stack<LL> st;
vector<LL> v;
vector<LL>::iterator it;
int main()
{
    cin.tie(0); cout.tie(0); ios::sync_with_stdio(false);
    int T=1;
    //cin>>T;
    while(T--)
    {
        LL n;
        cin>>n;
        string s;
        for(int i=1;i<=n;i++)
        {
            cin>>s;
            if(s=="Pop")
            {
                //当栈中没有元素的时候就是非法的,
                //否则输出我们抛出的那个元素并且与此同时在vector中删除一个一样的
                if(st.size()==0) cout<<"Invalid"<<endl;
                else
                {
                    cout<<st.top()<<endl;
                    it=lower_bound(v.begin(),v.end(),st.top());
                    v.erase(it);//it表示的是指针位置
                    st.pop();
                }
            }
            else if(s=="PeekMedian")
            {
                //当栈中没有元素的时候属于非法操作,
                //否则因为vector下标后退直接-1/2输出即可
                if(st.size()==0) cout<<"Invalid"<<endl;
                else cout<<v[(st.size()-1)/2]<<endl;
            }
            else
            {
                LL x;
                cin>>x;
                st.push(x);
                it=lower_bound(v.begin(),v.end(),x);
                v.insert(it,x);//在vector中it的位置直接插入x这个元素(保持vector的递增性)
            }
        }
    }
    return 0;
}

标签:练习题,const,PeekMedian,stl,LL,Pop,002,vector,Push
From: https://www.cnblogs.com/Vivian-0918/p/17249478.html

相关文章

  • 3月日常练习题-1
    目录一、找1二、挑兵挑将三、水位线四、小码哥的跳棋游戏五、小码哥与机器人六、银行账户七、数字问题八、字符串的解码九、斐波那契,但是是字符串十、最大的平均值十一、数......
  • stlren和sizeof()区别
    strlen函数和sizeof运算符都可以用来计算字符串的长度,但它们的作用不同。strlen函数的作用是计算字符串的长度,不包括字符串末尾的空字符。例如,如果有一个字符串"hello",那么......
  • Stream流方法的一些简单练习题
    Stream流练习题1、数据过滤定义一个集合,并添加一些整数1,2,3,4,5,6,7,8,9,10过滤奇数,只留下偶数并将结果保存起来。/***@author戒爱学Java*@date2023/3/239:......
  • 算法笔记的笔记——第6章 C++标准模板库(STL)
    vector变长数组长度根据需要而自动改变的数组可以用来以邻接表的方式储存图使用头文件:#include<vector>命名空间:usingnamespacestd;定义vector<typename>n......
  • python系列002
    //原始字符串的使用:在字符串前加r;//sublime需要保存后,调试//注意缩进,会引起python一直执行,逻辑错误//and计算到最后一个数,都非零返回最右;or从左计算到第一个不为0......
  • STL之list底层简单实现(七千字长文详解!)
    list底层的简单实现list_node的实现!要实现链表我们首先就要实现节点的结构体!structlist_node{ list_node*_next; list_node*_prev; T_data;};list_node的构......
  • PentestLab-web安全SQL注入-EXP9
    我们打开靶机,选择“SQL Injections”选择“Example9”观察页面盲注的方法如下:无回显,使用延时注入注入点​​http://192.168.1.142/sqli/example9.php?order=if(length(da......
  • stl之iterator_category
    首先要知道stl的算法是什么?算法(Algorithm)是functiontemplate,Algorithm看不见容器(Containers),所以要从iterator取信息,iterator必须回答Algorithm的问题来进行......
  • [NOIP2002]过河卒
    [NOIP2002]普及组]过河卒小结定义两个long型数组,代表棋盘和存放......
  • TZOJ 1222: 数据结构练习题――先序遍历二叉树 层次遍历
    描述 给定一颗二叉树,要求输出二叉树的深度以及先序遍历二叉树得到的序列。本题假设二叉树的结点数不超过1000。 输入 输入数据分为多组,第一行是测试数据的组数......