首页 > 其他分享 >L3-002 特殊堆栈

L3-002 特殊堆栈

时间:2024-04-02 20:13:14浏览次数:29  
标签:mdata 返回 begin 元素 back 002 L3 堆栈 data

维护两个栈。一个正常放数据,另一个是排序好的数据。

#include <bits/stdc++.h>
using namespace std;
int main(){
	vector<int> data;
	vector<int> mdata;
	vector<int>::iterator it;
	int n;
	cin>>n;
	while(n--){
       string s;
	   cin>>s;
	   if(s=="Pop"){
	   	   if(data.empty()){
	   	   	  cout << "Invalid"<<'\n';
	   	   	  continue;
		   }
		   int dt = data.back();
		   data.pop_back();
		   cout << dt << '\n';
		   it=lower_bound(mdata.begin(),mdata.end(),dt);
		   mdata.erase(it);
	   }else if(s=="PeekMedian"){
	   	   if(mdata.empty()) {
	   	   	   cout << "Invalid" << '\n';
	   	   	   continue;
			  }
	   	   if(mdata.size()%2==0){
	   	   	   cout << mdata[mdata.size()/2-1] << '\n';
			}else{
				cout << mdata[(mdata.size()+1)/2-1]<<'\n';
			}
	   }else if(s=="Push"){
	   	    int t;
	   	    cin>>t;
	   	    data.push_back(t);
	   	    it = lower_bound(mdata.begin(),mdata.end(),t);
	   	    mdata.insert(it,t);
	   }
	} 
	return 0;
}

附录:

代码 含义
c.front() 返回第一个数据
c.back() 返回数组中的最后一个数据
c.pop_back() 删除最后一个数据
c.push_back(element) 在尾部加一个数据
c.size() 返回实际数据个数(unsigned类型)
c.clear() 清除元素个数 ,N为元素个数
c.resize(n, v) 改变数组大小为 n , n 个空间数值赋为 v ,如果没有默认赋值为 0
c.insert(it, x) 向任意迭代器 it 插入一个元素 x ,
例: c.insert(c.begin() + 2,-1) 将 -1 插入 c[2] 的位置
c.erase(first,last) 删除 [first,last) 的所有元素,
c.begin() 返回首元素的迭代器(通俗来说就是地址)
c.end() 返回最后一个元素后一个位置的迭代器(地址)
c.empty() 判断是否为空,为空返回真,反之返回假

标签:mdata,返回,begin,元素,back,002,L3,堆栈,data
From: https://www.cnblogs.com/chengyiyuki/p/18111397

相关文章

  • L3-001 凑零钱
    一道很简单的DFS。#include<bits/stdc++.h>usingnamespacestd;intn,m,a[10010];vector<int>res;voiddfs(intstart,intown){ for(inti=start;i<n;i++){ if(own+a[i]>m)return; elseif(own+a[i]==m){ res.push_back(a[i]); intflag=0;......
  • 高精度、低功耗、小封装电压检测芯片 HXWSEMI桦芯微HX61CC2202MR、HX61CC2702MR、HX61
    HX61C系列芯片是使用CMOS技术开发的高精度、低功耗、小封装电压检测芯片。检测电压在小温度漂移的情况下保持极高的精度。客户可选择CMOS输出或OpenDrain输出。■产品特点高精度:±2%低功耗:2.0µA(Vin=1.5V)检测电压范围:1.0V~6.0V,100mV步进工作电压范围:0.7V......
  • L1-002 打印沙漏
    本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印*****************所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。给定任意N个......
  • Poi2002滑雪者命名
    网络流#有源汇上下界费用流#最小点覆盖最小点覆盖问题这里可以直接有源汇上下界费用流//Author:xiaruize#ifndefONLINE_JUDGE#definedebug(x)cerr<<"OnLine:"<<__LINE__<<#x<<"="<<x<<endlboolstart_of_memory_use;#else#defi......
  • 【洛谷P1036】 [NOIP2002 普及组] 选数
    一、题目:二、解题思路:本文章采用的解决方法是递归与DFS(深度优先搜索)。以下图是思路图:1.首先-确定位置题目说4个数字取三个数,所以考虑的只有三个位置和这三个位置分别放什么数值。从第一个位置开始放数。2.其次-开始放数分为4种可能,第一位置可以先放3,那么第二个位置......
  • 002 git日常操作-新建项目
    场景1:新建项目1.gitclone是用于从远程仓库克隆项目到本地的命令。最佳实践:选择合适的远程仓库URL:使用HTTPS或SSHURL克隆仓库,取决于你的访问权限和认证方式。SSHURL需要设置SSHkey。克隆到合适的目录:在克隆之前,选择一个合适的本地目录作为克隆仓库的存放位置......
  • 3121002754 刘栋 《需求规格说明书》
    这个作业属于哪个课程<软件工程2024-双学位>这个作业要求在哪里<团队作业2——需求说明文档>这个作业的目标完成需求文档目录团队作业2-需求说明文档需求说明面向用户分析功能性需求预期用户数量系统价值gitcode链接时间安排原安排表校正后安排感想团队作业2-......
  • ORA-00020错误模拟及处理方法
    当数据库的连接数达到上限后,后续的登陆操作都会报ORA-00020错误,这里给出ORA-00020错误的模拟及处理方法。1.调整数据库的processes参数到251)由于processes参数是静态参数,调整时需要使用“scope=spfile”选项进行调整。sys@ora11g>altersystemsetprocesses=25scope=spfile;系......
  • P1037 [NOIP2002 普及组] 产生数 python 题解
    原题链接:产生数原理解释本题就是基本的dfs,对每一个数遍历深搜,得到他能变化的所有情况,最后相乘就是结果,网上都是c的解法,需要用到高精度,但是python可以处理大数,不需要。vis[]判断该数是否变换过,防止重复以n=123,k=2,变换列表x=[1,3],y=[3,4],即1->3,3->4:先遍历1:遍历......
  • 基于 DYNAMIXEL XL330 舵机的5自由度机械臂
    完整视频链接:https://www.bilibili.com/video/BV1Yz421f7AK/?spm_id_from=333.999.0.0&vd_source=9456951d706e2acc026e424d8a228909 ProjectDescription:A5DOFrobotarmusingtheDynamixelXL-330andArduinoMKR.Allpartsoftherobotarmare3Dprintedusing......