两道日常练习题:洛谷P1165日志分析 + 洛谷P1553 数字反转(升级版)

两道题的代码我都会附着文字详解,并且会简洁说明一下思路:

先看第一套题目:

    题干:

输入输出: 

 

数据范围:

  这很明显是一道栈的问题,我们只需要根据题意模拟即可,需要注意的是当输入的N,也就是操作数较大的时候,我们需要考虑一个问题就是怎样去输出当操作类型为2,也就是输出当前库中最大的货物重量,我一开始是直接写了一个线性枚举的函数在栈中去查找,如下:

#include<iostream>
using namespace std;
const int N=2e5+100;
int a[N],n,top;
int fine(int x[],int l){int ans=-1<<20;for(int i=1;i<=l;i++)ans=max(ans,x[i]);return ans;
}
int main(){cin>>n;for(int i=1;i<=n;i++){int pd;cin>>pd;if(pd==0){int x;cin>>x;a[++top]=x;		}else if(pd==1){if(top!=0)--top;}else {if(top==0) cout<<"0"<<endl;else cout<<fine(a,top)<<endl;	}}return 0;
}

很明显当N很大的时候,使用枚举函数输出最大重量的货物会超时,这是一段66分的代码,所以我考虑一下优化并仔细阅读了一下题目,发现我们可以直接在n次操作的枚举的过程中去更新当前货物最重的值以及他对应的在栈中的位置,同时在源代码的基础上考虑当仓库为空的时候,不同操作应该怎么做,接下来看代码:

#include<iostream>
using namespace std;
const int N=2e5+100;//把N定义到最大数据范围以上
int a[N],n,top;//a数组存栈中元素,n代表了操作个数,top表示栈顶指针
int main(){cin>>n;int ans=0,t=-1;//这里的ans和t是当前栈中最重的货物以及对应a数组下标for(int i=1;i<=n;i++){int pd;cin>>pd;//操作类型if(pd==0){int x;cin>>x;a[++top]=x;if(x>ans){//更新ansans=x;t=top;}		}else if(pd==1){if(ans==a[top] && top>1){//如果删除的这个货物是原来栈中最重的货物并且删除了之后栈中仍存在货物ans=-1;for(int j=1;j<=top-1;j++){//在top的前面所有货物中找出最重的货物if(a[j]>ans){ans=a[j];t=j;}}}else if(ans==a[top] && top==1){//如果栈中已经只剩下一个货物并即将被删除ans=0;//将ans重新定义为0}if(top>0) --top; //当仓库非空时栈顶指针减去1}else {cout<<ans<<endl;//当操作选项为2的时候输出当前仓库的最重货物	}}return 0;
}

接下来看第二题:

输入输出以及数据范围;

 对所输入的数据的保证:

这道题目的思路并不复杂,主要就是存在太多的细节,直接上代码吧:

 

#include<string>
#include<iostream>
using namespace std;
int main(){string s;cin>>s;//用一个字符串来存储输入int l=s.size();//字符串的长度bool pd=false;//判断这个输入的字符串对应是否是整数int t;//如果是非整数,t就用来记录出现符号v对应的位置下标char v;//如果不是整数判断对应的别的数据类型并记录对应符号for(int i=0;i<l;i++)//这里判断输入的是否为整数{if(s[i]=='.' || s[i]=='%' || s[i]=='/'){v=s[i];pd=true;t=i;break;}}if(!pd && s[0]=='0'){//特判当输入为整数0的时候cout<<s[0];return 0;}if(!pd){//当输入一个非0的整数的时候int b=0;//当出现首个非0元素的时候更新b为1for(int i=l-1;i>=0;i--){if(s[i]!='0') b=1;//注意细节if(b==1)  cout<<s[i];}return 0;}else {//当输入不是整数char str[100];//用来记录t位置之前需要反转的数字for(int i=0;i<t;i++)str[i]=s[t-1-i];int p=0;	for(int i=0;i<t;i++){if(str[i]!='0') p=1;if(p==1) cout<<str[i];//同样要等出现首个非0元才能开始输出}//特判当符号前面数据为0的情况if(v=='/' && s[0]=='0') cout<<0; if(v=='%' && s[0]=='0') cout<<0;if(v=='.' && s[0]=='0') cout<<0; cout<<v;if(v=='%') return 0;//当为百分数的时候,输出已经结束了else {//否则根据是分数还是小数进行输出if(v=='/'){int n=0;for(int j=l-1;j>t;j--){if(s[j]!='0') n=1;	if(n==1) cout<<s[j];	}}else {bool ok=false;//用来判断小数的小数部分是否全部为0for(int j=l-1;j>t;j--)if(s[j]!='0') ok=true;if(!ok) cout<<0;//如果全部为0小数部分需要输出一个0else{//否则正常进行反转int q=t+1;while(s[q]=='0') ++q; 	for(int j=l-1;j>=q;j--){cout<<s[j];}}	}     }}return 0;		
}

代码较长不过思路不复杂并且非常详细易懂考虑进了所有的情况,希望读者能够耐心看完。

谢谢观看,希望对你有所帮助!

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

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

相关文章

动手做个无人机—材料篇

基于浙江大学Fast-Lab(高飞&#xff0c;潘能)和深蓝学院合作课程&#xff1a;第二课&#xff1a;动力套焊接_哔哩哔哩_bilibili 无人机材料1&#xff1a; 1、NUC 猛虎峡谷 准系统 i5薄款&#xff1a; 一款机载电脑&#xff0c;使用i5-1135G7 &#xff0c;最大内存64G&#xff…

八股文学习日常第一期(20240121)

零、前言 1、目的 帮助掌握面试题&#xff0c;就八股文相关内容展开进行学习和整理&#xff0c;也方便之后的复习和巩固。 2、八股文内容来源 ①https://blog.csdn.net/w20001118/article/details/125724647 一、具体内容分析 1、类的完整书写方式 1.1、类 [Access Mod…

7.【CPP】String类

一.汉字的编码 我们知道计算机存储英文字母&#xff0c;标点&#xff0c;数字用的是ascall码&#xff0c;128种用一个字节表示绰绰有余。而汉字远远不止128种&#xff0c;因此汉字需要两个字节表示。 1.gbk编码中汉字占两个字节。 2.utf-8中&#xff0c;一个汉字占三个字节。…

【博士每天一篇论文-技术综述】Machine Learning With Echo State Networks 一篇系统讲解ESN知识的五星文章

阅读时间&#xff1a;2023-11-21 1 介绍 年份&#xff1a;2020 作者&#xff1a;徐元超&#xff0c;曼尼托巴大学 期刊&#xff1a; 无 引用量&#xff1a;无 这篇文章是一篇技术报告&#xff0c;从递归神经网络&#xff08;RNNs&#xff09;引入到回声状态网络&#xff08;…

Unity中实现捏脸系统

前言 目前市面上常见的捏脸一般是基于BlendShapes和控制骨骼点坐标两种方案实现的。后者能够控制的精细程度更高&#xff0c;同时使用BlendShapes来控制表情。 控制骨骼点坐标 比如找到控制鼻子的骨骼节点修改localScale缩放&#xff0c;调节鼻子大小。 BlendShapes控制表…

【数学笔记】集合及简要逻辑

集合 基础简要逻辑集合间的关系与运算 基础 集合定义&#xff1a;把一些能够确定的不同对象组成的整体叫做一个集合&#xff0c;每个对象叫做元素。集合记法&#xff1a;一般用大写字母 A , B , C . . . . . . A,B,C...... A,B,C......表示集合&#xff0c;小写字母 a , b ,…

分布式锁实现(mysql,以及redis)以及分布式的概念

道生一&#xff0c;一生二&#xff0c;二生三&#xff0c;三生万物 我旁边的一位老哥跟我说&#xff0c;你知道分布式是是用来干什么的嘛&#xff1f;一句话给我干懵了&#xff0c;我能隐含知道&#xff0c;大概是用来做分压处理的&#xff0c;并增加系统稳定性的。但是具体如…

特征融合篇 | YOLOv8 引入长颈特征融合网络 Giraffe FPN

在本报告中,我们介绍了一种名为DAMO-YOLO的快速而准确的目标检测方法,其性能优于现有的YOLO系列。DAMO-YOLO是在YOLO的基础上通过引入一些新技术而扩展的,这些技术包括神经架构搜索(NAS)、高效的重参数化广义FPN(RepGFPN)、带有AlignedOTA标签分配的轻量级头部以及蒸馏增…

android usb2.0 协议基础(1)

1-USB 基本知识 USB的重要关键概念: 1、 端点&#xff1a;位于USB设备或主机上的一个数据缓冲区&#xff0c;用来存放和发送USB的各种数据&#xff0c;每一个端点都有惟一的确定地址&#xff0c;有不同的传输特性&#xff08;如输入端点、输出端点、配置端点、批量传输端点) 2…

ORB-SLAM 论文阅读

论文链接 ORB-SLAM 0. Abstract 本文提出了 ORB-SLAM&#xff0c;一种基于特征的单目同步定位和建图 (SLAM) 系统该系统对严重的运动杂波具有鲁棒性&#xff0c;允许宽基线环路闭合和重新定位&#xff0c;并包括全自动初始化选择重建的点和关键帧的适者生存策略具有出色的鲁棒…

Android 基础技术——View 的宽高

笔者希望做一个系列&#xff0c;整理 Android 基础技术&#xff0c;本章是关于 View 的宽高 Activity Resume 的时候设置或者获取view的宽高是否有效? 回答&#xff1a;不确定。 首次 onResume 无效&#xff0c;二次 onResume 就有效了。 回顾「Android 基础技术——addView 流…

Eclipses安装教程

一、下载开发工具包 1、开发工具包JDK 下载地址链接&#xff1a;https://www.oracle.com/cn/java/technologies/downloads/ 下载教程&#xff1a; 1&#xff09;点击链接&#xff0c;可以跳转到页面 2&#xff09;下滑页面&#xff0c;找到开发工具包 3&#xff09; 记住下载之…

初识C语言·自定义类型(1)

目录 1 联合体类型的声明 2 联合体的特点 3 联合体的大小计算 4 枚举类型类型的声明 5 枚举的优点 1 联合体类型的声明 联合体&#xff0c;顾名思义&#xff0c;是多个对象连在一起的&#xff0c;即联合体的成员都是共用空间的&#xff0c;所以联合体也叫做共用体&#xf…

Java开发分析工具 JProfiler的详细使用方法解析(附 JProfiler for Mac许可证秘钥)

JProfiler 是一款功能强大的Java代码分析工具&#xff0c;JProfiler的直观UI可帮助您解决性能瓶颈&#xff0c;确定内存泄漏并了解线程问题且JProfiler Mac破解版配置会话非常简单&#xff0c;第三方集成使得入门变得轻而易举&#xff0c;并且以自然的方式呈现数据分析。 解…

万物简单AIoT 端云一体实战案例学习 之 快速开始

学物联网,来万物简单IoT物联网!! 下图是本案的3步导学,每个步骤中实现的功能请参考图中的说明。 1、简介 物联网具有场景多且复杂、链路长且开发门槛高等特点,让很多想学习或正在学习物联网的学生或开发者有点不知所措,甚至直接就放弃了。    万物简单AIoT物联网教育…

72.批量执行Redis命令的4种方式!

文章目录 前言一、Redis命令执行过程二、原生批量命令三、pipeline(管道)四、Lua脚本五、Redis事务六、Redis Cluster模式下该如何正确使用批量命令操作&#xff1f; 前言 在我们的印象中Redis命令好像都是一个个单条进行执行的&#xff0c;但实际上我们是可以批量执行Redis命…

二层交换机和三层交换机

二层交换机&#xff1a;将源mac和端口进行转发&#xff0c;是同一个网段进行通信的&#xff0c;不能实现路由转发&#xff0c;若想跨网段则需要接入一个路由器 如&#xff1a;pc1 192.168.1.1 与 pc2 192.168.1.2通信需要经过二层交换机&#xff0c;二层交换机不能配置ip的&am…

【前端设计】输入框

欢迎来到前端设计专栏&#xff0c;本专栏收藏了一些好看且实用的前端作品&#xff0c;使用简单的html、css语法打造创意有趣的作品&#xff0c;为网站加入更多高级创意的元素。 html <!DOCTYPE html> <html lang"en"> <head><meta charset"…

RHCE上课笔记(前半部分)

第一部分 网络服务 第一章 例行性工作 1.单一执行的例行性工作 单一执行的例行性工作&#xff08;就像某一个时间点 的闹钟&#xff09;&#xff1a;仅处理执行一次 1.1 at命令&#xff1a;定时任务信息 [rhellocalhost ~]$ rpm -qa |grep -w at at-spi2-core-2.40.3-1.el9.x…

Nacos 在云原生架构下的演进

作者&#xff1a;之卫 背景 Nacos 提供的最核心能力是动态服务发现与动态配置管理能力&#xff0c;在云原生环境下&#xff0c;借助云产品&#xff0c;如 EDAS&#xff08;企业级分布式应用服务&#xff09;平台中&#xff0c;我们可以很轻松地使用 K8s 来托管 Nacos 体系的微…