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

embedded/2025/3/16 17:08:00/

刷题_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天,继续加油啊!!!

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

相关文章

opencv-显示图片

安装软件 sudo apt install python3 //确保虚拟机只有python3 ln -sf /usr/bin/python3.6 /usr/bin/python sudo apt install python3-pip pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple pip install opencv-contrib-python -i https://pypi.tuna…

Python中的静态方法如何使用?

在Python里&#xff0c;类当中的方法可以分为多种不同的类型&#xff0c;其中staticmethod是一个十分有趣而又实用的功能。我们来好好地聊一聊什么是静态方法&#xff0c;它的用途是什么&#xff0c;以及如何在实际应用中使用它们&#xff01; 首先&#xff0c;定义一下静态方…

UBuntu24.04-JDK7-TOMCAT7安装

jdk7 apt-get 找不到。 tomcat7 也没找到。 以下是安装成功的&#xff0c;供大家参考。 1.JAVA openjdk-7-jdk /usr/lib/jvm/java-7-openjdk-amd641.安装指定版本apt search jdk //查找版本sudo apt install default-jdk //此为默认版本sudo apt install ope…

Java版本切换~Linux

Java版本切换~Linux 来自&#xff1a; Ultra&#xff5e;你过来啊 浅木先生 2025年03月13日 12:46 环境情况&#xff1a; centos7 服务器&#xff0c; 已经使用 yum 方式安装过 java1.8 与 java11 安装方式可参照&#xff1a; https://wx.zsxq.com/columns/15552425251112?…

OpenSSL 的主要功能及其示例命令

OpenSSL 是一个功能强大的开源工具包&#xff0c;用于处理各种与加密相关的任务&#xff0c;包括生成密钥、创建证书、加密解密数据、验证证书等。以下是 OpenSSL 的主要功能及其示例命令。 1.生成密钥 1.1 生成 RSA 私钥 openssl genrsa -out private_key.pem 2048• 说明&a…

CSDN博客:Markdown编辑语法教程总结教程(下)

❤个人主页&#xff1a;折枝寄北的博客 Markdown编辑语法教程总结 前言1. LaTex数学公式2. 插入不同类别的图2.1 插入甘特图2.2 插入UML图2.3 插入Mermaid流程图2.4 插入Flowchart流程图2.5 插入classDiagram类图 3. CSDN快捷键4. 字体相关设置4.1 字体样式改变4.2 字体大小改变…

3.数据结构-串、数组和广义表

串、数组和广义表 3.1串3.1.1串的类型定义、存储结构及其运算串的顺序存储串的堆式顺序存储结构串的链式存储 3.1.2 串的模式匹配算法BF算法*KMP算法&#xff08;待更新&#xff09; 3.2数组3.2.1数组的顺序存储3.2.2特殊矩阵的压缩存储对称矩阵三角矩阵对角矩阵 3.3广义表*案例…

Python(学习一)

做网站有成熟的框架像FLASK、DJANGO、TORNADO&#xff0c;写爬虫有好用到哭的REQUESTS&#xff0c;还有强大到没盆友的SCRAPY 随着NUMPY、SCIPY、MATLOTLIB等众多第三方模块的开发和完善&#xff0c;不仅支持py支持各种数学运算&#xff0c;还可以绘制高质量的2D和3D图像&…