笔试编程-百战成神——Day02

news2024/9/27 5:51:39

1.简写单词

题目来源: 简写单词——牛客网

测试用例 

算法原理 

本题的主要难点就是如何识别每一个单词并且返回其首字母大写,最终组成一个新的字符串后输出,这里我们使用while(cin>>str)就可以解决,直接忽略每一个空格直接读入字符串

1.直接读入字符串后判断字符串首字母str[0]是否为大写字母,如果为小写字母则需要(char)(s[0]-32)来强制转化为大写字母,最后返回即可,属于简单类型建议直接秒杀

实战演练 

#include<iostream>
#include<string>
using namespace std;

int main()
{
    string str;
    while(cin>>str)
    {
        //小写字母需要转换
        if(str[0] >= 'a' && str[0] <= 'z')
        {
            cout<<(char)(str[0] - 32);
        }
        else
        {
            cout<<str[0];
        }
    }
    
    return 0;
}

2.dd爱框框

题目来源: dd爱框框——牛客网

测试用例 

算法原理 

 本题的核心思路就是"滑动窗口",也就是同向双指针的原理,即使用left与right两个同向移动的指针来模拟一个虚拟的滑动窗口,保证窗口内的元素符合条件,然后返回需要的数据

1.首先向右移动right指针入窗口,直到窗口内元素之和>=x,然后更新此时的左右指针

2.然后开始右移left指针出窗口,如果窗口内元素<x,就再次右移right指针,继续更新左右指针即可,直到遍历完整个数组

注意:题目要求数组从下标为1开始,所以输入时需要注意

实战演练 

#include<iostream>

using namespace std;

const int N = 1e7 + 10;
int arr[N];
int n,x;

int main()
{
    cin>>n>>x;
    for(int i = 1;i <= n;i++)
    {
        cin>>arr[i];
    }
    int len = N;
    int lenleft = -1,lenright = -1;
    int left = 0,right = 0;
    int sum = 0;
    while(right <= n)
    {
        //入窗口
        sum += arr[right];
        while(sum >= x)
        {
            //更新结果
            if(len > right - left + 1)
            {
                len = right - left + 1;
                lenleft = left;
                lenright = right;
            }
            //出窗口
            sum -= arr[left++];
        }
        //继续入窗口
        right++;
    }
    
    cout<<lenleft<<" "<<lenright<<endl;
    
    return 0;
}

3.除2!

题目来源: 除2!——牛客网

测试用例 

算法原理 

 本题的解决思路是使用优先级队列默认升序来对待操作数中的最大偶数进行运算

1.首先计算原来所以待操作数的总和,这里使用一个变量x来不断输入,不使用数组,更加简单,同时判断输入的数字是否为偶数,是则插入到优先级队列中

2.取出优先级队列中的顶部元素,因为默认升序排列,所以顶部元素就是最大偶数,此时将原来的总和减去该最大偶数的一半,然后将该偶数从优先级队列中删除,同时判断该最大偶数除以2后是否仍然为偶数,是则再次插入优先级队列中进行后续操作,最后打印总和

注意:

1.这里操作进行的条件不止是k>0,还要保证优先级队列不为空,避免全为奇数的情况

2.本题的数据范围很大,所以需要使用long long类型来存储数据,这里直接使用typedef更加方便

实战演练 

#include<iostream>
#include<queue>
using namespace std;
typedef long long LL;
priority_queue<LL> heap;
LL n,k;

int main()
{
    cin>>n>>k;
    LL sum = 0,x;
    //不额外开辟新的数组,创建变量x实时输入数据
    for(int i = 0;i < n;i++)
    {
        cin>>x;
        //统计数字之和
        sum += x;
        //将所有偶数存入优先级队列,默认升序排列
        if(x % 2 == 0)
        {
            heap.push(x);
        }
    }
    //当优先级队列不为空且k不为0时运行程序
    //避免待操作数中全是奇数
    while(!heap.empty() && k--)
    {
        //取出最大的偶数并从优先级队列删除
        LL t = heap.top() / 2;
        heap.pop();
        //将原来的和减去最大偶数的一半
        sum -= t;
        //如果最大偶数减去一般仍然为偶数
        //则继续插入到优先级队列中进行后续操作
        if(t % 2 == 0)
        {
            heap.push(t);
        }
    }
    
    cout<<sum<<endl;
    
    return 0;
}

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

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

相关文章

深入理解及如何使用main函数参数

目录 前言&#xff1a;一、main函数参数二、main函数参数的意义及如何使用三、从操作系统层面&#xff08;指令&#xff09;理解main函数参数 前言&#xff1a; 在平时编写代码的过程中&#xff0c;我们会经常写main函数&#xff0c;这是一个程序必不可少的&#xff0c;main 函…

信息汇总(避坑)系统

本系统前期设定为公司避坑系统&#xff0c;在此基础上衍生出公司信息汇总功能 主要功能点&#xff1a;避坑分类、标签、随笔记录、阅读人数、评论&#xff08;用户评论、匿名评论&#xff0c;评论回复等&#xff09;、系统留言&#xff08;支持表情留言&#xff09;、避坑信息…

JavaScript中的无穷大

JavaScript中的无穷大 溢出&#xff1a;overflow,数字结果超过JS表示的数字上限&#xff0c;结果为一个特殊的无穷大Infinity或负无穷大-Infinity. 下溢&#xff1a;underflow是当前结果无限接近于0比JS能表示的最小值还要小&#xff0c;将会返回0&#xff0c;负数下溢就是-0…

剑指offer JZ7 重建二叉树

描述&#xff1a; 给定节点数为 n 的二叉树的前序遍历和中序遍历结果&#xff0c;请重建出该二叉树并返回它的头结点。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6}&#xff0c;则重建出如下图所示。 思路&#xff1a; 这道题考察的是二叉树根据先序…

蓝桥杯备赛---引言

我是来自成都锦城学院的2021级学生&#xff0c;第一次参加第十五届蓝桥杯嵌入式赛道获得了国二的名次&#xff0c;接下来将为大家分享各个模块的代码&#xff0c;可以速成省一&#xff0c;但想要取得国一的成绩则需要补偿数据结构、基本c语言函数等相关知识&#xff0c;很遗憾没…

C++ 创建型设计模式

何为设计模式 设计模式是指在软件开发中&#xff0c;经过验证的&#xff0c;用于解决在特定环 境下&#xff0c;重复出现的&#xff0c;特定问题的解决方案&#xff1b; 设计原则 依赖倒置 开放封闭 一个类应该对扩展&#xff08;组合和继承&#xff09;开放&#xff0c;对…

犀牛检测系统源码分享

犀牛检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vision …

N诺计算机考研-错题

B A.LLC,逻辑链路控制子层。一个主机中可能有多个进程在运行,它们可能同时与其他的一些进程(在同一主机或多个主机中)进行通信。因此在一个主机的 LLC子层的一个服务访问点,以便向多个进程提供服务。B.MAC地址,称为物理地址、硬件地址,也称为局域网地址,用来定义网络设…

python与html链接测试

做这个测试我使用了两个资源 1.csdn上收集的参考资料&#xff0c;特此感谢 链接如下&#xff1a;Pycharm社区版创建Flask项目(配置项目文件)_pycharm community flask-CSDN博客 2.kimi 网址如下&#xff1a;Kimi.ai - 帮你看更大的世界 (moonshot.cn) 这是试出来的操作步骤…

python如何查看文件的目录

1、sys.arg[0]: import sys print(sys.argv[0])#当前脚本的位置 输出结果&#xff1a; G:/Pythonxx/test.py 2、os模块 import os print("1111") print (os.getcwd())#获得当前目录 print (os.path.abspath(.))#获得当前工作目录 print (os.path.abspath(..))#获得当…

基于丹摩智算部署可图(Kolors)

&#x1f351;个人主页&#xff1a;Jupiter. &#x1f680; 所属专栏&#xff1a;Linux从入门到进阶 欢迎大家点赞收藏评论&#x1f60a; 目录 丹摩智算平台简介一、Kolors 简介介绍技术背景部署与使用前提条件 二、DAMODEL 平台创建适配机器1.1、实例创建 三、服务部署安装 An…

性能测试利器 - Locust框架解析

01 认识Locust 说起性能测试工具&#xff0c;大家肯定想到的都是Jmeter&#xff0c;是的&#xff0c;由于其简单易用、功能强大&#xff0c;已经变成主流的压测工具之一。当需要实现一些高级功能的时候&#xff0c;可以使用Java语言对Jmeter进行扩展。 但是很多小伙伴只会Pyt…

10种数据库技术的发展历程与现状

数据库是互联网的基石&#xff0c;存储着海量信息&#xff0c;使信息可被高效地组织、检索和分享。没有数据库&#xff0c;网站无法记忆用户数据&#xff0c;应用无法提供个性化服务&#xff0c;信息交流将失去智能与连贯性。因此&#xff0c;数据库技术极大地推动了互联网的发…

如何使用 Windows 自带的虚拟机 Hyper-V

当前环境: Windows 10 Pro 开启 Hyper-V 功能 开启 Hyper-V 功能 开始菜单, 搜索 “control” 打开控制面板点击 “程序” > “启用或关闭 Windows 功能”开启所有的 Hyper-V 选项 安装虚拟机 准备系统镜像 .iso 文件 进入 itellyou.cn 进行下载所需镜像我选择的是: Wind…

nginx部署手册

1、在安装nginx前首先要确认系统中安装了gcc、pcre-devel、zlib-devel、openssl-devel yum -y install gcc pcre-devel zlib-devel openssl openssl-devel2、 新建nginx用户 &#xff08;1&#xff09;groupadd 命令用于创建一个新的用户组 groupadd nginx&#xff08;2&#…

鸿蒙开发(NEXT/API 12)【基础功能(EnterpriseAdminExtensionAbility开发指南)】企业设备管理服务

概述 企业设备管理扩展能力&#xff0c;是设备管理应用必备组件。当开发者为企业开发设备管理应用时&#xff0c;需继承EnterpriseAdminExtensionAbility&#xff0c;在EnterpriseAdminExtensionAbility实例中实现MDM业务逻辑&#xff0c;EnterpriseAdminExtensionAbility实现…

Xcode 16 上传AppStore遇到第三方库 bitcode 的问题

Xcode 16 上传AppStore遇到第三方库 bitcode 的问题 最近两天更新了Xcode 16&#xff0c;然后正好要发布新版本的App&#xff0c;打包Adhoc没问题&#xff0c;但是上传AppStoreConnect或者TestFlight就不行解决方案参考资料 最近两天更新了Xcode 16&#xff0c;然后正好要发布新…

【裸机装机系列】15.kali(ubuntu)-重装linux步骤

推荐阅读&#xff1a; 1.kali(ubuntu)-为什么弃用ubuntu&#xff0c;而选择基于debian的kali操作系统 如果你想重装linux系统&#xff0c;因为装机时采用了LVM分区的方式&#xff0c;那就可以按照下面步骤来操作&#xff1a; 保留 /home分区&#xff0c;“/swap”可以不动&am…

修改Opcenter EXFN 页面超时时间(Adjust UI Session Extend Token)

如果你想修改Opcenter EXFN中页面Session的超时时间&#xff0c;你可以按照如下步骤修改SessionAge 这个参数&#xff1a; 管理员运行CMD执行以下命令 umconf -getconfig -file C:\temp\config.json如果第2步有报错&#xff0c;则执行步骤4;如果没有报错则执行第5步如果第2步…