【备战秋招】——算法题目训练和总结day3


追梦之旅,你我同行

   
😎博客昵称:博客小梦
😊最喜欢的座右铭:全神贯注的上吧!!!
😊作者简介:一名热爱C/C++,算法等技术、喜爱运动、热爱K歌、敢于追梦的小博主!

😘博主小留言:哈喽!😄各位CSDN的uu们,我是你的博客好友小梦,希望我的文章可以给您带来一定的帮助,话不多说,文章推上!欢迎大家在评论区唠嗑指正,觉得好的话别忘了一键三连哦!😘
在这里插入图片描述

前言🙌

    哈喽各位友友们😊,我今天又学到了很多有趣的知识现在迫不及待的想和大家分享一下!😘都是精华内容,可不要错过哟!!!😍😍😍

BC149简写单词

链接: 149简写单词
在这里插入图片描述

在这里插入图片描述

题解思路分析

算法思想:模拟。

  1. 首先是认真审题,结合示例理解。
  2. 我们可以利用cin流提取的特点,巧妙的跳过空格。每一次读到一个单词,然后将首字母进行一个简单的判断,如果是大写字母就转小写。
代码分享:
#include <iostream>
using namespace std;

int main()
{
    string s;
    while(cin >> s)
    {
        if(s[0] >= 'a' && s[0] <= 'z') cout << (char)(s[0] - 32);
        else cout << s[0];
    }

    return 0;
}

dd爱框框

链接: dd爱框框

在这里插入图片描述
在这里插入图片描述

题解思路分析

算法思想:同向双指针/滑动窗口

  1. 首先是认真审题,结合示例理解
  2. 写出滑动窗口四部法则:进窗口、判断、出窗口、更新结果注意什么时候要跟新结果,这个因题而异。这里的更新结果放到判断和出窗口之间的位置。
  • 进窗口:sum += a[r];
  • 判断:sum >= x
  • 出窗口:sum -= a[l++];
  • 更新结果:r - l + 1< mindis
  1. 根据四步,完成代码,并注意细节即可
代码分享:
#include<iostream>
using namespace std;

const int N = 1e7 + 10;
int a[N];
int l = 0, r = 0, sum = 0;
int mindis = 0x3f3f3f3f;


int main()
{
    int n , x;
    int left,right;
    cin >> n >> x;
    for(int i = 1; i <= n; i++)
    {
        cin >> a[i];
    }
    while(r <= n)
    {
        //进窗口
        sum += a[r];
        //判断
        while(sum >= x)
        {
            //更新
            if(r - l + 1< mindis)
            {
                left = l;
                right = r;
                mindis = r - l + 1;
            }
            //出窗口
            sum -= a[l++];
        }
        r++;
    }
    cout << left << " " << right << endl;
    
    return 0;
}

除2!

链接: 除2!
在这里插入图片描述

在这里插入图片描述

题解思路分析

算法思想:模拟 + 贪心 + 堆

  1. 首先是认真审题,结合示例理解。这里的数据个数和范围都比较大,如果累加,会有溢出情况的。因此我们定义的sum为long long 类型。博主就是因为没审清楚题,掉在坑里半天了。。。。
  2. 既然要使得最后数组之和最小,那很自然的我们就想到贪心的思想,即每一次操作都把最大的那个偶数进行减半。
  3. 我们借助堆数据结构,可以进行一个很好的控制,写起代码来也比较好控制。
代码分享:
#include<iostream>
#include<queue>
using namespace std;


int main()
{
    int n,k;
    cin >> n >> k;
    long long sum = 0;
    int a = 0;
    priority_queue<int> heap;
    for(int i = 0; i < n; i++)
    {
        cin >> a;
        sum += a;
        if(a % 2 == 0)
            heap.push(a);
    }
    while(!heap.empty() && k--)
    {
        int t = heap.top() / 2;
        heap.pop();
        sum -= t;
        if(t % 2 == 0)
            heap.push(t);
    }
    cout << sum << endl;
    return 0;
}

总结撒花💞

   本篇文章旨在分享的是算法题目题解知识。希望大家通过阅读此文有所收获
   😘如果我写的有什么不好之处,请在文章下方给出你宝贵的意见😊。如果觉得我写的好的话请点个赞赞和关注哦~😘😘😘

相关推荐

  1. 2024届SLAMer算法岗面试题总结

    2024-07-12 00:56:02       31 阅读
  2. 【25届备战C++】算法篇-贪心算法(Greedy)

    2024-07-12 00:56:02       46 阅读
  3. 【25届备战C++】算法篇-排序算法合集

    2024-07-12 00:56:02       18 阅读
  4. 24 双非计算机总结

    2024-07-12 00:56:02       46 阅读
  5. 计算机学院——总结

    2024-07-12 00:56:02       22 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-12 00:56:02       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-12 00:56:02       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-12 00:56:02       58 阅读
  4. Python语言-面向对象

    2024-07-12 00:56:02       69 阅读

热门阅读

  1. prototype 和 __proto__的区别

    2024-07-12 00:56:02       24 阅读
  2. Spring-Data-Elasticsearch

    2024-07-12 00:56:02       27 阅读
  3. npm ERR! code ENOTEMPTY npm ERR! syscall rename npm ERR!

    2024-07-12 00:56:02       22 阅读
  4. sizeof()

    2024-07-12 00:56:02       24 阅读
  5. Python 四种字符串格式化方式

    2024-07-12 00:56:02       23 阅读
  6. 存取款系统接口设计

    2024-07-12 00:56:02       20 阅读
  7. SpringBoot 自定义异常返回数据格式

    2024-07-12 00:56:02       21 阅读
  8. ubuntu 安装cups和爱普生打印机

    2024-07-12 00:56:02       20 阅读
  9. 服务器怎么进PE系统?

    2024-07-12 00:56:02       25 阅读
  10. 还在代码中写HttpUtil?是时候说再见啦

    2024-07-12 00:56:02       24 阅读
  11. selenium常用方法

    2024-07-12 00:56:02       24 阅读