23蓝桥杯ACM培训-栈

news2025/1/27 12:42:55

前言:

回校第二天训练,今天的题目主要与stack有关。

正文:

Problem:A 栈-程序员输入问题:

#include<bits/stdc++.h>
using namespace std;
int main(){
	stack<char> s1;
	stack<char> s2;
	string str;
	getline(cin,str);
	int len=str.size();
	for(int i=0;i<len;i++)
    {
        if(str[i]=='@')
        {
            while(!s1.empty())
            {
              s1.pop();
            }
            continue;
        }
		if(str[i]=='#')
        {
          if(!s1.empty())
          {
              s1.pop();continue;
          }
        }
        s1.push(str[i]);
    }
    while(!s1.empty())
    {
        s2.push(s1.top());
        s1.pop();
    }
    while(!s2.empty())
    {
        printf("%c",s2.top());
        s2.pop();
    }
    printf("\n");
    return 0;
}

注意输入有空格。用两个stack,其中一个先接受输入的字符,遇到#就弹出栈顶,遇到@就将栈全布元素都弹出,之后用另一个stack将顺序恢复并输出。

Problem:B 栈-溶液模拟器:

#include <bits/stdc++.h>
using namespace std;
typedef struct{
	int v;
	double c;
}ly;
stack<ly> x;
int main(){
	int v0,c0;
	int n;
	cin>>v0>>c0;x.push({v0,c0});
	cin>>n;
	while(n--){
		string str;
		cin>>str;
		if(str=="P"){
			ly tmp=x.top();
			int v1,v2,v3;double c1,c2,c3;cin>>v1>>c1;
			v2=tmp.v;c2=tmp.c;
			v3=v1+v2;c3=(v1*c1+v2*c2)/v3;
			x.push({v3,c3});
			printf("%d %.5lf\n",v3,c3);
		}
		if(str=="Z"){
			if(x.size()==1){
				printf("%d %.5lf\n",v0,c0);
			}
			else{
				x.pop();
                ly tmp=x.top();
                printf("%d %.5lf\n",tmp.v,tmp.c);
			}
		}
	}
	return 0;
}

重新定义一个结构体,建立一个stack用于储存这个结构体,再根据操作实时更新stack,为p就更新答案,为z就弹出顶部答案(没上次操作就弹出v0,c0)。

Problem:C 栈-火车编组:

#include <bits/stdc++.h>
using namespace std;
int n,p,a[110];
stack<int>s;
int main()
{
    ios::sync_with_stdio(false);
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>a[i];
    p=1;
    for(int i=1;i<=n;i++)
    {
        if(i<=a[p]){s.push(i);printf("A");}
        if(i==a[p])
        {
            while(!s.empty()&&s.top()==a[p])
            {
                s.pop();
                printf("B");
                p++;
            }
            if(p==n+1)break;
        }
    }
    printf("\n");
    return 0;
}

在数据合理的情况下我们只需要注意p值(相对应数的位置)的更改即可。

Problem:D 栈-洗盘子:

#include <bits/stdc++.h>
using namespace std;
stack<int>s1,s2,s3;
int main()
{
    int n,x,flag;
    cin>>n;
    for(int i=n;i>=1;i--)
        s1.push(i);
    while(!(s1.empty()&&s2.empty()))
    {
        cin>>flag>>x;
        if(flag==1)
        {
            while(x--&&!s1.empty())
            {s2.push(s1.top());s1.pop();}
        }
        if(flag==2)
        {
            while(x--&&!s2.empty())
            {s3.push(s2.top());s2.pop();}
        }
    }
    while(!s3.empty())
    {printf("%d\n",s3.top());s3.pop();}
    return 0;
}

很直观易懂的题目,一步一步慢慢写就行了。

Problem:E 栈-括号匹配:

#include<bits/stdc++.h>
using namespace std;
int main(){
	stack<char> k;
	string s;
	cin>>s;
	int l=s.size();
	char tmp;
	for(int i=0;i<l;i++){
		if(k.empty()){
			k.push(s[i]);
		}
		else{
			tmp=k.top();
			if((tmp=='['&&s[i]==']')||(tmp=='('&&s[i]==')')){
				k.pop();
			}
			else{
				k.push(s[i]);
			}
		}
		}
	if(k.empty()){
		cout<<"OK"<<endl;
	}
	else cout<<"Wrong"<<endl;
	return 0;
}

一时未匹配的括号先在stack里储着,如果有匹配括号就弹出,另一边也不用储入,遍历完后检查stack中是否为空即可。

后记:

  老师今天说寒假没努力等比赛就只能当分母了,瞬间感觉自己中了一枪,寒假前信誓旦旦的说自己要在家好好学习的,结果摆了整整两个月,我的自制力果然有待加强。如今已经返校了,在校园内自己一定要把握好剩下的时间,让自己有更大的进步。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1494993.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

模仿Gitee实现站外链接跳转时进行确认

概述 如Gitee等网站&#xff0c;在有外部链接的时候如果不是同域则会出现一个确认页面。本文就带你看看这个功能应该如何实现。 效果 实现 1. 实现思路 将打开链接作为参数传递给一个中间页面&#xff0c;在页面加载的时候判断链接的域名和当前网站是否同域&#xff0c;同域…

贪心 Leetcode 763 划分字母区间

划分字母区间 Leetcode 763 学习记录自代码随想录 给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段&#xff0c;同一字母最多出现在一个片段中。 注意&#xff0c;划分结果需要满足&#xff1a;将所有划分结果按顺序连接&#xff0c;得到的字符串仍然是 s 。 返…

机器学习-面经(part7、无监督学习)

机器学习面经系列的其他部分如下所示&#xff1a; 机器学习-面经&#xff08;part1&#xff09; 机器学习-面经(part2)-交叉验证、超参数优化、评价指标等内容 机器学习-面经(part3)-正则化、特征工程面试问题与解答合集机器学习-面经(part4)-决策树共5000字的面试问题与解答…

C++ spfa求最短路 (可以带负权边)SPFA算法

给定一个 n 个点 m 条边的有向图&#xff0c;图中可能存在重边和自环&#xff0c; 边权可能为负数。 请你求出 1 号点到 n 号点的最短距离&#xff0c;如果无法从 1 号点走到 n 号点&#xff0c;则输出 impossible。 数据保证不存在负权回路。 输入格式 第一行包含整数 n 和…

一个基于差异同步数据库结构的工具 - Skeema

本文是 GO 三方库推荐的第 5 篇&#xff0c;继续介绍数据库 schema 同步工具&#xff0c;我前面已经写了两篇这个主题的文章。系列查看&#xff1a;Golang 三方库。 今天&#xff0c;推荐是的一个基于差异实现数据库 schema 迁移的工具库 - skeema&#xff0c;同样由 Go 实现。…

docker-compose Install Dockge

Dockge Dockge 是一个精美的、易于使用的、反应式的自托管 docker compose.yaml 面向堆栈的管理器。 主要特性: 通过Web页面管理compose.yaml文件。 创建/编辑/启动/停止/重新启动/删除容器。更新Docker镜像。交互式Web终端。响应式设计,实时更新进度(Pull/Up/Down)和Web…

#include<ros/ros.h>头文件报错

快捷键 ctrl shift B 调用编译&#xff0c;选择:catkin_make:build&#xff09;(要先在vscode上添加扩展&#xff1a;ros) 可以点击配置设置为默认&#xff0c;修改.vscode/tasks.json 文件 修改.vscode/tasks.json 文件&#xff0c;否则ros.h头文件会报错 内容修改为以下内…

代码学习记录13

随想录日记part13 t i m e &#xff1a; time&#xff1a; time&#xff1a; 2024.03.06 主要内容&#xff1a;今天的主要内容是二叉树的第二部分哦&#xff0c;主要有层序遍历&#xff1b;翻转二叉树&#xff1b;对称二叉树。 102.二叉树的层序遍历226.翻转二叉树101. 对称二叉…

Java精品项目--第6期基于SpringBoot的茶叶商城的设计分析与实现

项目技术栈 SpringBootMavenMySQLJAVAMybatis-PLusVue.js&#xff08;非前后端分离&#xff09;Element-UI&#xff08;非前后端分离&#xff09;… 表截图 项目截图

分布式事务(SeataClient)

问题场景 元数据 库存 100订单记录为空下单操作 @AutowiredRestTemplate restTemplate;/*** 下单** @return*/@Transactional // 开启事务 异常后触发数据库回滚操作@Overridepublic Order create(Order order) {// 插入订单orderMapper.insert(order);// 扣减库存 MultiValu…

Python调用edge-tts实现在线文字转语音

edge-tts是一个 Python 模块&#xff0c;允许通过Python代码或命令的方式使用 Microsoft Edge 的在线文本转语音服务。 项目源码 GitHub - rany2/edge-tts: Use Microsoft Edges online text-to-speech service from Python WITHOUT needing Microsoft Edge or Windows or an…

Intel RealSense D435环境搭建之安装pyrealsense2

ERROR: Could not find a version that satisfies the requirement pyrealsense2 (from versions: none) pip install pyrealsense2 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com 方法一&#xff1a;升级pip python -m pip install --upgrade pip 方…

Scrapy与分布式开发(3):Scrapy核心组件与运行机制

Scrapy核心组件与运行机制 引言 这一章开始讲解Scrapy核心组件的功能与作用&#xff0c;通过流程图了解整体的运行机制&#xff0c;然后了解它的安装与项目创建&#xff0c;为后续实战做好准备。 Scrapy定义 Scrapy是一个为了爬取网站数据、提取结构性数据而编写的应用框架…

java-新手笔记(类篇)-暂时总结

类定义 用于存储的方法的结构体容器,可以封装多个方法 当在ideal编程器中的工程中创建类文件的同时,就会创建一个公共类, 当我们在新建一个公共类的时候,会出现报错,其要求公共类必须同类文件名一致 同一文件编写新类的时候,不要加public修饰词 调用类…

基于串流技术的p2p共享桌面共享方案

研究远控有一定时间了&#xff0c;但真正落地运用的不多&#xff0c;所以也不太上心&#xff0c;平时也只是自己diy玩玩&#xff0c;远程共享看看电视剧。 最近生成式ai大火&#xff0c;直接带动了gpu应用的相关场景&#xff0c;相关场景&#xff0c;但gpu卡又贵&#xff0c;对…

EXCEL计算时间差(单位毫秒)

公式 VALUE(MID(TEXT(C4,"h:mm:ss.000"),10,7))VALUE(MID(TEXT(C4,"h:mm:ss.000"),6,4))*1000

八、西瓜书——特征选择与稀疏学习

1.子集搜索与评价 对于1个学习任务来说,给定属性集,其中有些属性可能很关键、很有用&#xff0c;另一些属性则可能没什么用&#xff0c;我们将属性称为“特征”(feature),对当前学习任务有用的属性称为“相关特征”(relevant feature)、没什么用的属性称为“无关特征”(irrelev…

Xilinx 7系列FPGA配置(ug470)

Xilinx 7系列FPGA配置&#xff08;ug470&#xff09; 配置模式串行配置模式接口从-连接方式主-连接方式串行菊花链&#xff08;非同时配置&#xff09;串行配置&#xff08;同时配置&#xff09;时序 主SPI配置模式SPIx1/x2 连接图SPIx1模式时序SPIx4 连接图SPI操作指令操作fla…

【工作记录】Threejs学习笔记-引入OrbitControls

前言 前一篇文章我们介绍了three.js中的基础概念&#xff0c;并给出了展示整体流程的一个简单示例&#xff0c; 本文我们继续研究。 问题 我们在很多3d效果图上都能看到鼠标移动或者缩进实现旋转或者放大缩小的效果&#xff0c;这个在three.js中是通过OrbitControls这个组件…

计网面试题整理上

1. 计算机网络的各层协议及作用&#xff1f; 计算机网络体系可以大致分为一下三种&#xff0c;OSI七层模型、TCP/IP四层模型和五层模型。 OSI七层模型&#xff1a;大而全&#xff0c;但是比较复杂、而且是先有了理论模型&#xff0c;没有实际应用。TCP/IP四层模型&#xff1a…