【C++】 —— 笔试刷题day_3

刷题_day3

继续加油!!!

一、简写单词

题目链接:简写单词

题目描述

在这里插入图片描述

这道题比较简单,题目说的也非常简单明了

输入一行复合词,要求我们输出每个单词的首字母大写。

算法思路

这里我们可以看到输入的复合词中,每一个单词用 隔开;所以我们就可以应该单词应该单词读取(而不是使用getline来读取一行)。

读取到一个单词之后,如果其首字母是大写就直接输出,如果不是就转换成大写再进行输出。

注意:这里如果使用getline来读取一行,处理起来将会十分的麻烦;极其不推荐

代码实现

#include <iostream>
using namespace std;int main() {string str;while(cin>>str){if(str[0]>='a' && str[0]<='z')cout<<(char)(str[0]-32);elsecout<<str[0];}return 0;
}

二、DD爱框框

题目链接:DD爱框框

题目描述

在这里插入图片描述

输入n,x,再输入n个数,让我们找到在这个数组中a中找到连续的区间[l,r],这个区间内的和大于等于x,并且返回长度最小的(如果存在相同长度的,输出l最小的那一个)。

这里需要注意的是

  • 这里题目中说的下标是从1开始的,所以我们最后输出的结果也是下标从1开始对应的下标。
  • 题目要求长度相同的,返回l最小的,这里不需要太关注(我们遍历是从左往右的,所以只需要遇到长度最短的再进行更新结果即可)。

算法思路

看到这道题,首先暴力解法,枚举出来所有的连续区间;找到其中大于等于x且长度最小的。

(如果了解过滑动窗口算法的,这道题可以说一眼秒了。

现在来暴力解法进行优化:

对于暴力解法,我们找到满足条件的区间[l,r]时,我们会执行l++,然后让r再从l开始,寻找满足条件的区间。

这样时间复杂度就到达了O(n^2)

在这里插入图片描述

那该如何遍历呢?

  • 这里我们更新完结果并执行完l++以后,让r保持不动
  • 如果还是满足条件,就重复上述操作。直到不满足条件
  • 再让r往后遍历即可。

这样r遍历完成以后,我们就遍历结束了。

这里稍微了解一下滑动窗口

  • 进窗口
  • 更新结果
  • 出窗口并更新结果直到不满足条件

这样,我们从始至终都维持了一个窗口[l,r],只需要在其右侧进行进窗口,左侧进行出窗口节课;根据题意在需要位置进行更新结果。

在这里插入图片描述

代码实现

#include<iostream>using namespace std;
const int N = 1e8+10;
int arr[N];
int n,x;int main()
{cin>>n>>x;for(int i=1;i<n;i++) cin>>arr[i];int left =1, right =1;int ret = n + 1, retLeft = -1, retRight = -1;int sum = 0;while(right < n){//入窗口sum+=arr[right];//出窗口while(sum>=x){if(right - left < ret){//更新结果ret = right -left;retLeft = left;retRight = right;}sum -= arr[left++];}right++;}cout<<retLeft<<" "<<retRight<<endl;return 0;
}

三、除2

题目链接:除2

题目描述

在这里插入图片描述

题目要求,在输入的一堆数当中,我们可以对其中的偶数进行k/2操作,让数组中的所有数之和尽可能最小。然后让我们求出这个最小的数之和并输出。

这里注意观察题目的数值范围,1<= a <=10^91<= n <=100000;我们在定义变量时就不能定义整形,而是long long以免数据超出范围

算法思路

在这里插入图片描述

看一下题目这个示例1,我们可以了解到,对一个偶数/2之后的除数如果是偶数,我们还是可以对其进行/2操作的。

看完题目,我们大致可以了解到:题目要求

  • 对偶数进行/2操作,那么奇数我们操作不了,就可以将奇数先加起来。
  • 对偶数操作之后的除数如果是偶数,我们可以对除数进行/2操作
  • 我们需要保证,进行k次/2操作以后,所以数之后是最小的;那这样我们只需要对最大的偶数进行/2操作就好了

这样,我们就可以现将奇数加起来,然后对偶数进行操作,如果除数是奇数,就可以直接将其加起来;如果是除数是偶数,我们就要将除数放回到偶数堆中,然后接着进行/2操作。

看到这里,我们遇到了一个问题?

如何存放偶数,保证我们每一次都能取到最大的偶数,并且在进行/2操作后,将这个除数放回偶数里面。

这里就要用到一个数据结构,那就是,也就是priority_queue

那这道题的总体思路就是,将奇数累加起来,让偶数保持一个堆结构来保证我们每一次对偶数的最大值进行操作。

代码实现

#include<iostream>
#include<queue>using namespace std;int main()
{int n,k;cin>>n>>k;priority_queue<long long> pq;long long sum =0;long long x;for(int i=0;i<n;i++){cin>>x;if(x%2==0)//如果输入的是偶数pq.push(x);else//输入的是奇数sum+=x;}while(!pq.empty() && k--){x = pq.top();pq.pop();x/=2;if(x%2==0)//除数是偶数pq.push(x);else//除数是奇数sum+=x;}while(!pq.empty()){sum+=pq.top();pq.pop();}cout<<sum<<endl;return 0;
}

坚持打卡第3天,继续加油啊!!!

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

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

相关文章

数学建模:MATLAB强化学习

一、强化学习简述 强化学习是一种通过与环境交互&#xff0c;学习状态到行为的映射关系&#xff0c;以获得最大积累期望回报的方法。包含环境&#xff0c;动作和奖励三部分&#xff0c;本质是智能体通过与环境的交互&#xff0c;使得其作出的动作所得到的决策得到的总的奖励达…

C++:二分习题

1. 借教室 503. 借教室 - AcWing题库 在大学期间&#xff0c;经常需要租借教室。 大到院系举办活动&#xff0c;小到学习小组自习讨论&#xff0c;都需要向学校申请借教室。 教室的大小功能不同&#xff0c;借教室人的身份不同&#xff0c;借教室的手续也不一样。  面对海…

二进制安装指定版本的MariaDBv10.11.6

一、官网下载mariadb安装包 Download MariaDB Server - MariaDB.org 找到对应的版本 下载安装包后上传到服务器这里不再赘述。 二、安装二进制包 1、解压安装包 2、查看安装包内的安装提示文档根据提示文档进行安装 # 解压安装包 tar xf mariadb-10.11.6-linux-systemd-x8…

2025-03-12 Python深度学习1——安装Anaconda与PyTorch库

文章目录 1 配置 Anaconda1.1 下载1.2 安装1.3 配置环境变量1.4 检查安装 2 安装 PyTorch 库2.1 创建 DL 环境2.2 安装/升级 CUDA2.3 配置环境变量2.4 安装 Pytorch 库方法一&#xff08;不稳定&#xff09;方法二&#xff08;推荐&#xff09; 2.5 检查安装 3 Pycharm Communi…

Redis-缓存穿透击穿雪崩

1. 穿透问题 缓存穿透问题就是查询不存在的数据。在缓存穿透中&#xff0c;先查缓存&#xff0c;缓存没有数据&#xff0c;就会请求到数据库上&#xff0c;导致数据库压力剧增。 解决方法&#xff1a; 给不存在的key加上空值&#xff0c;防止每次都会请求到数据库。布隆过滤器…

学习springboot(Bean 注册,Bean 扫描)

Bean 扫描 可以浏览下面的博客链接 &#xff1a;spring 学习 &#xff08;注解&#xff09;-CSDN博客 在学习spring 注解时&#xff0c;我们使用 Component &#xff0c;Service,Controller等 这样的注解&#xff0c;将目标类信息&#xff0c;传递给IOC容器&#xff0c;为其创…

使用Mermaid语法绘制的C语言程序从Linux移植到Windows的流程图

以下是使用Mermaid语法绘制的C语言程序从Linux移植到Windows的流程图&#xff1a; graph TDA[开始移植] --> B[代码兼容性检查]B --> C[检查系统调用差异\nfork/exec -> CreateProcess]B --> D[检查文件路径格式\n/ vs \\]B --> E[检查依赖库兼容性\nPOSIX vs …

网络信息安全专业(710207)网络安全攻防实训室建设方案

一、引言 随着信息技术的飞速发展&#xff0c;网络空间安全已成为国家安全的重要组成部分&#xff0c;对网络信息安全专业人才的需求日益增长。为满足网络信息安全专业&#xff08;专业代码710207&#xff09;的教学需求&#xff0c;提升学生在网络安全攻防领域的实践能力&…

赶紧白P这款免费神器!

现在&#xff0c;很多视频剪辑软件都开始收费了&#xff0c;真正免费又好用的软件真的越来越难找了。 今天&#xff0c;我给大家推荐一款非常小巧的视频编辑工具&#xff0c;目前完全免费&#xff0c;功能却非常丰富。 咔咔一通剪 视频编辑工具 这款软件真的超级轻巧&#xff…

Qt 初识1.1

目录 QLineEdit QPushButton connet&#xff1a; Qt命名规范 Qt窗口坐标系 QLineEdit ​ ​ QPushButton ​ 给按钮的点击操作上关联一个处理函数。 connet&#xff1a; connet的作用是连接信号和槽&#xff0c;是QObject类中的一个静态函数&#xff0c; ​ Qt命…

Linux内核机制之epoll详解

目录 简介&#xff1a; 一、IO 多路复用介绍 1、select&#xff0c;poll&#xff0c;epoll 引入 2、select&#xff0c;poll&#xff0c;epoll 区别分析 3、epoll 原理 3.1 epoll 相关函数介绍 1&#xff09;epoll_create 2&#xff09;epoll_ctl 3&#xff09;epoll_…

以 ArcGIS Pro 为笔,绘就水墨地图画卷

一、引言 水墨画&#xff0c;作为中国传统绘画艺术的瑰宝&#xff0c;以其独特的韵味和表现力&#xff0c;在艺术领域占据着重要地位。它通过水与墨的交融&#xff0c;展现出山水之间的灵动与韵味。 而将这种艺术形式与现代地理信息系统&#xff08;GIS&#xff09;技术相结合…

JAVA:利用 Jsoup 轻松解析和操作 HTML 的技术指南

1、简述 在现代 Java 开发中&#xff0c;处理 HTML 数据是一项常见需求&#xff0c;无论是抓取网页数据、解析 HTML 文档&#xff0c;还是操作 DOM 树&#xff0c;Jsoup 都是一个强大的工具。它是一个基于 Java 的 HTML 解析库&#xff0c;支持从 URL、文件或字符串中解析 HTM…

个人记录的一个插件,Unity-RuntimeMonitor

没有什么干货,仅仅是个人的记录 基于GUI做的一个工具:好处就是Monitor必须,Unity天然支持实时的Monitor;唯一不好处,就是默认字体太小了,layout居中,居右也是要自行设计的。 (下面文字是有一点点写错,但意思和功能就很牛逼了;并不是都按2 x shift,而是一个 shift 添…

云服务器安装宝塔面板部署

单机部署(前端vue项目) 服务器安装宝塔面板 连接到服务器 使用 SSH 连接到你的服务器&#xff1a; ssh rootip安装宝塔面板 运行以下命令来安装宝塔面板&#xff1a; yum install -y wget wget -O install.sh http://download.bt.cn/install/install_6.0.sh sh install.sh安…

Java数据结构第二十期:解构排序算法的艺术与科学(二)

专栏&#xff1a;Java数据结构秘籍 个人主页&#xff1a;手握风云 目录 一、常见排序算法的实现 1.1. 直接选择排序 1.2. 堆排序 1.3. 冒泡排序 1.4. 快速排序 一、常见排序算法的实现 1.1. 直接选择排序 每⼀次从待排序的数据元素中选出最小的⼀个元素&#xff0c;存放在…

【MapSet】哈希表

目录 1. 搜索树 1.1 概念 1.2 操作-查找 1.3 操作-插入 1.4 操作-删除&#xff08;难点&#xff09; 1.5 性能分析 1.6 和java类集的关系 2. 搜索 2.1 概念及场景 2.2 模型 3. Map的使用 3.1 关于Map的说明 3.2 关于Map.Entry的说明 3.3 Map的常用方法说明 3.4 …

手写一个Tomcat

Tomcat 是一个广泛使用的开源 Java Servlet 容器&#xff0c;用于运行 Java Web 应用程序。虽然 Tomcat 本身功能强大且复杂&#xff0c;但通过手写一个简易版的 Tomcat&#xff0c;我们可以更好地理解其核心工作原理。本文将带你一步步实现一个简易版的 Tomcat&#xff0c;并深…

git commit messege 模板设置 (规范化管理git)

配置方法 git config --global core.editor vim &#xff08;设置 Git 的默认编辑器为 Vim&#xff09;在用户根目录下&#xff08;~&#xff09;&#xff0c;创建一个.git_commit_msg文件&#xff0c;然后把下面的内容拷贝到文件中并保存。 [version][模块][类型]{解决xxx问题…

亚信安全发布第七期《勒索家族和勒索事件监控报告》

本周态势快速感知 本周全球共监测到勒索事件121起&#xff0c;与上周相比&#xff0c;勒索事件数量大幅下降&#xff0c;仍需注意防范。从整体上看Clop是影响最严重的勒索家族&#xff1b;本周Ransomhub和Akira也是活动频繁的两个恶意家族&#xff0c;需要注意防范。本周&…