算法手记3

🦄个人主页 :修修修也

🎏所属专栏 :刷题

⚙️操作环境 :牛客网


目录

一.dd爱框框

题目详情:

题目思路:

解题代码:

二.除2!

题目详情:

题目思路:

解题代码:

结语


一.dd爱框框

牛客网题目链接(点击即可跳转):dd爱框框


题目详情:

本题详情如下图:


题目思路:

本题解题思路如下:

滑动窗口!双指针一个left,一个right,同向向后滑动即可.窗口大于x就缩紧left向后移动,窗口小于x就扩大right向后移动.注意,left的下标从0开始,输出位置时要加1,right表示的是和left的相对距离,所以输出时不用加1.思路图示如下:


解题代码:

本题解题代码如下:

cpp 复制代码
#include<iostream>
#include<vector>

using namespace std;
int main()
{
    //滑动窗口,同向双指针
    //输入数据
    int n,x;
    cin>>n>>x;
    vector<int> vi;
    vi.resize(n);
    for(int i=0;i<n;i++)
    {
        cin>>vi[i];
    }
    //开始解题
    int left=0,right=0;
    int min_left=0,min_right= n;
    int sum=0;
    while(left<n && right<n && left<=right)
    {
        if(sum<x)
        {
            //扩大窗口
            sum+=vi[right];
            right++;
        }
        else
        {
            //如果新窗口长度比老窗口小,就更新最小区间
            if((right-left) < (min_right-min_left))
            {
                min_right=right;
                min_left=left;
            }
            //缩小窗口
            sum-=vi[left];
            left++;
        }
    }
    
    cout<<min_left+1<<" "<<min_right;
    return 0;
}

二.除2!

牛客网题目链接(点击即可跳转):除2!


题目详情:

本题详情如下图:


题目思路:

本题解题思路如下:

一开始输入的时候把奇数直接加到sum里,偶数直接push进大根堆,后面循环k次(条件是堆不为空)把堆顶的数据除2,堆顶除2后还是偶数就继续push进堆,如果不是偶数就直接加进sum.循环完毕把堆里剩下的偶数加进sum后输出即可.


解题代码:

本题解题代码如下:

cpp 复制代码
#include<iostream>
#include<queue>
using namespace std;

int main()
{
    int n,k,tmp;
    long long sum;
    cin>>n>>k;
    priority_queue<int> pq;
    for(int i=0;i<n;i++)
    {
        cin>>tmp;
        if(tmp%2==0)
            pq.push(tmp);
        else
            sum+=tmp;
    }
    for(int i=0;i<k;i++)
    {
        if(pq.empty())
            break;
        tmp = pq.top()/2;
        pq.pop();
        if(tmp%2==0)
            pq.push(tmp);
        else
            sum+=tmp;
    }
    while(!pq.empty())
    {
        sum+=pq.top();
        pq.pop();
    }
    cout<<sum;
    return 0;
}

结语

说点啥好呢...这两道题都不难,主要是手生,一时半会就ac不出来,有思路可以,下次画个图可能会更直观明了一点.以及之前手撕的STL没想到还有漏网之鱼,后续有空记得补一篇优先级队列的使用说明手册哈.

相关推荐
机器学习之心3 小时前
多目标鲸鱼优化算法(NSWOA),含46种测试函数和9个评价指标,MATLAB实现
算法·matlab·多目标鲸鱼优化算法·46种测试函数·9个评价指标
古译汉书4 小时前
嵌入式铁头山羊STM32-各章节详细笔记-查阅传送门
数据结构·笔记·stm32·单片机·嵌入式硬件·个人开发
max5006004 小时前
基于Meta Llama的二语习得学习者行为预测计算模型
人工智能·算法·机器学习·分类·数据挖掘·llama
橘颂TA5 小时前
【数据结构】解锁数据结构:通往高效编程的密钥
数据结构
王哥儿聊AI5 小时前
Lynx:新一代个性化视频生成模型,单图即可生成视频,重新定义身份一致性与视觉质量
人工智能·算法·安全·机器学习·音视频·软件工程
手握风云-7 小时前
优选算法的寻踪契合:字符串专题
算法
闭着眼睛学算法7 小时前
【华为OD机考正在更新】2025年双机位A卷真题【完全原创题解 | 详细考点分类 | 不断更新题目 | 六种主流语言Py+Java+Cpp+C+Js+Go】
java·c语言·javascript·c++·python·算法·华为od
IT古董7 小时前
【第五章:计算机视觉-项目实战之目标检测实战】2.目标检测实战:中国交通标志检测-(2)中国交通标志检测数据格式转化与读取
算法·目标检测·计算机视觉
MobotStone7 小时前
LLM 采样入门到进阶:理解与实践 Top-K、Top-P、温度控制
算法
Coovally AI模型快速验证7 小时前
从避障到实时建图:机器学习如何让无人机更智能、更安全、更实用(附微型机载演示示例)
人工智能·深度学习·神经网络·学习·安全·机器学习·无人机