[笔试训练](十八)

news2024/9/30 1:37:50

目录

052:字符串压缩

053:chika和蜜柑

054:01背包


052:字符串压缩

压缩字符串(一)_牛客题霸_牛客网 (nowcoder.com)

题目: 

题解:

双指针模拟

class Solution {
public:
    string compressString(string param) 
    {
        int n=param.size();
        string ret;
        int num=1;
        int left=0,right=0;
        ret+=param[0];
        while(left<n-1)
        {
            right+=1;
            if(param[left]==param[right])
            {
                num++;
            }
            else if(param[left]!=param[right] || right==n-1)
            {
                if(num!=1)
                {
                    if(num<=9)
                    {
                        ret+=num+'0';
                    }
                    else
                    {
                        ret+=to_string(num);
                    }     
                    num=1;
                }
                ret+=param[right];
                left=right;
            }        
        }
        return ret;       
    }
};

053:chika和蜜柑

chika和蜜柑 (nowcoder.com)

题目:

题解:

将每个橘子按甜度从大到小排序,相同甜度的橘子按酸度从小到大排序,从排序好的橘子中取前k个就是最优解。

有两个影响元素的排序需要二元组的思想排序:

// 使用lambda表达式对二元组进行排序  
// 排序规则:先按第二个元素从大到小排序,如果第二个元素相同,则按第一个元素从小到大排序  

sort(arr, arr + n, [&](const PII & a, const PII & b) {
        if (a.second != b.second) return a.second > b.second;
        else return a.first < b.first;
    });

#include <iostream>
#include<algorithm>
using namespace std;
typedef long long LL;
typedef pair<int,int> PII;
const int N = 2e5 + 10;
PII arr[N];
int n = 0, k = 0;
int main() {
    cin >> n >> k;
    for (int i = 0; i < n; i++) cin >> arr[i].first;
    for (int i = 0; i < n; i++) cin >> arr[i].second;
    sort(arr, arr + n, [&](const PII & a, const PII & b) {
        if (a.second != b.second) return a.second > b.second;
        else return a.first < b.first;
    });
    long long s = 0, t = 0;
    for (int i = 0; i < k; i++) {
        s += arr[i].first;
        t += arr[i].second;
    }
    cout << s << " " << t << endl;
    return 0;

}

054:01背包

01背包_牛客题霸_牛客网 (nowcoder.com)

题目:

题解:

01背包模板题:
1. 状态表⽰:
dp[i][j] 表⽰从前 i 个物品中挑选,总体积不超过 j 的情况下,最⼤重量是多少。
2. 状态转移⽅程:
根据「最后⼀步」的状况,来分情况讨论:
i. 不选第i 个物品:相当于就是去前 i - 1 个物品中挑选,并且总体积不超过 j 。此时dp[i][j] = dp[i - 1][j] ;

ii. 选择第 i 个物品:那么我就只能去前 i - 1 个物品中,挑选总体积不超过 j - v[i] 的物品。此时 dp[i][j] = dp[i - 1][j - v[i]] + w[i] 。但是这种状态不⼀定存在,因此需要特判⼀下。
综上,状态转移⽅程为: dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - v[i]] + w[i])

 

class Solution {
public:

    int knapsack(int V, int n, vector<vector<int> >& vw) 
    {    
        int dp[1010][1010];
        for(int i=1;i<=n;i++)
        {
            for(int j=0;j<=V;j++)
            {
                dp[i][j]=dp[i-1][j];
                if(j>=vw[i-1][0]) dp[i][j]=max(dp[i][j],dp[i-1][j-vw[i-1][0]]+vw[i-1][1]);
            } 
        }
        return dp[n][V];
    }
};


//**空间优化版**
class Solution {
public:
    int knapsack(int V, int n, vector<vector<int> >& vw) 
    {
        int dp[1010]={0};
        
        
        for(int i=0;i<n;i++)
        {
            for(int j=V;j>=vw[i][0];j--)
            {
                dp[j]=max(dp[j],dp[j-vw[i][0]]+vw[i][1]);
            }
            
        }
        
        return dp[V];
    }
};

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

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

相关文章

【AI+换脸换装】从OpenAI 探索色情露骨内容领域浅聊AI换脸换装

5月9日消息&#xff0c;据外电报道&#xff0c;OpenAI 周三发布了文档草案&#xff0c;阐述了它希望 ChatGPT 及其其他人工智能技术如何运作。冗长的Model Spec 文件的一部分透露&#xff0c;该公司正在探索进军色情和其他露骨内容领域。 看完这个&#xff0c;心里有点惊讶&am…

java发送请求-二次开发-get请求json

这里有2个判断 如果param为空则对url发送请求 再继续判断有值时&#xff0c;接口参数时json还是namevalue格式 因为json是带{,所以可以先写为param包含{}, 反之就是请求格式是url&#xff1f;param 请求json要带参数&#xff0c;所以需要使用setEntity方法&#xff0c; 最…

C++学习第二十八课:C++ 中的智能指针详解

在 C 中&#xff0c;内存管理是每个程序员都需要面对的问题。在处理动态分配的内存时&#xff0c;如果忘记释放内存&#xff0c;可能会导致内存泄漏。为了解决这个问题&#xff0c;C11 引入了智能指针的概念。本文将详细介绍 C 中使用智能指针的方法&#xff0c;并结合实际案例…

关于服务端接口知识的汇总

大家好&#xff0c;今天给大家分享一下之前整理的关于接口知识的汇总&#xff0c;对于测试人员来说&#xff0c;深入了解接口知识能带来诸多显著的好处。 一、为什么要了解接口知识&#xff1f; 接口是系统不同模块之间交互的关键通道。只有充分掌握接口知识&#xff0c;才能…

【赠书活动第4期】《Rust编程与项目实战》

赠书活动 《Rust编程与项目实战》免费赠书 3 本&#xff0c; 收到赠书之后&#xff0c;写一篇 本书某一节内容 的学习博客文章。 可在本帖评论中表示参加&#xff0c;即可获得赠书&#xff0c;先到先得。学习心得博客链接&#xff0c;后面有空发上来。 赠书截止日期为送出3…

如何完美解决Outlook大文件传送问题,提升办公协作效率?

在日常工作中&#xff0c;邮件是一种常用的通信方式&#xff0c;经常用来发送各类文件&#xff0c;比如报告和文档、合同和协议、财务报表、营销资料、设计文件等。但有时文件会比较大&#xff0c;因此Outlook大文件传送时&#xff0c;会遇到附件大小受限的情况。常用的解决发送…

c++11 标准模板(STL)本地化库 - 平面类别(std::money_put) - 格式化货币值为字符序列以输出

本地化库 本地环境设施包含字符分类和字符串校对、数值、货币及日期/时间格式化和分析&#xff0c;以及消息取得的国际化支持。本地环境设置控制流 I/O 、正则表达式库和 C 标准库的其他组件的行为。 平面类别 格式化货币值为字符序列以输出 std::money_put template< …

Spring Framework-IoC详解

IoC的概念和作用 在介绍Ioc之前&#xff0c;我们首先先了解一下以下内容 什么是程序的耦合 耦合性(Coupling)&#xff0c;也叫耦合度&#xff0c;是对模块间关联程度的度量。耦合的强弱取决于模块间接口的复杂性、调用模块的方式以及通过界面传送数据的多少。模块间的耦合度…

Git 如何管理标签命令(tag)

1.查看本地仓库tag --1.查看本地仓库tag UserDESKTOP-2NRT2ST MINGW64 /e/GITROOT/STARiBOSS/STARiBOSS-5GCA (gw_frontend_master) $ git tag 1stBossUpgrade V10.0.1_20220224_test V10.0.1_20220301_test tag-gwfrontend-V1.0.12-230625 tag-gw_frontend-23.08.29 tag-gw_f…

基于springboot实现毕业设计系统项目【项目源码+论文说明】

基于springboot实现毕业设计系统演示 摘要 在如今社会上&#xff0c;关于信息上面的处理&#xff0c;没有任何一个企业或者个人会忽视&#xff0c;如何让信息急速传递&#xff0c;并且归档储存查询&#xff0c;采用之前的纸张记录模式已经不符合当前使用要求了。所以&#xff…

C++:虚函数表Hook

Hook 在计算机编程中&#xff0c;"Hook"&#xff08;钩子&#xff09;是一种技术&#xff0c;用于拦截并修改特定事件或函数的执行流程。它允许程序员在特定的代码点插入自定义的代码&#xff0c;以实现对程序行为的修改、监视或增强。 虚函数表Hook 虚函数表&#…

Springboot+Vue项目-基于Java+MySQL的车辆管理系统(附源码+演示视频+LW)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &…

untiy 为预制体动态加载光照贴图

unity版本为2021.8 预制体不能携带光照贴图信息&#xff0c;只能我们自己准备了 多方查找加自己摸索终于找到了适合新版本的解决方案&#xff0c;直接贴代码 将这个脚本挂到预制体的最上级 using System.Collections; using System.Collections.Generic; using UnityEditor; …

【半夜学习MySQL】库的操作(含库的创建、删除、修改、备份操作/查看mysql连接情况/字符集和校验规则详谈)

&#x1f3e0;关于专栏&#xff1a;半夜学习MySQL专栏用于记录MySQL数据相关内容。 &#x1f3af;每天努力一点点&#xff0c;技术变化看得见 文章目录 创建数据库字符集和校验规则查看字符集合校验规则校验规则对数据库的影响 操纵数据库数据备份和恢复查看连接情况 创建数据库…

SDXL-ControlNet模型MistoLine:引领高精度图像生成的革新高质量图像模型

在数字艺术的浩瀚星空中&#xff0c;MistoLine犹如一颗璀璨的新星&#xff0c;以其对SDXL-ControlNet技术的深度整合&#xff0c;展示了对多种线稿类型的非凡适应能力&#xff0c;并在高精度图像生成领域树立了新的标杆。 GitHub&#xff1a;https://github.com/TheMistoAI/Mi…

Spring Framework-简介

Spring Framework Java Spring是一个开源的Java应用框架&#xff0c;它的主要目的是简化企业级应用开发的复杂性。Spring框架为开发者提供了许多基础功能&#xff0c;使得开发者能够更专注于业务逻辑的实现&#xff0c;而不是底层的细节。 主要特点和功能&#xff1a; 控制反…

Redis-新数据类型-Hyperloglog

新数据类型-Hyperloglog 简介 在我们做站点流量统计的时候一般会统计页面UV(独立访客:unique visitor)和PV(即页面浏览量&#xff1a;page view)。 什么是基数&#xff1f; 数据集&#xff5b;1&#xff0c;2&#xff0c;5&#xff0c;7&#xff0c;5&#xff0c;7&#xff…

Spring框架学习-详细

文章目录 1. Spring简介1.1 面向接口编程1.2 Spring简介1.3 Spring体系结构 2 Spring IoC - 基于XML2.1 Sping框架部署&#xff08;IoC&#xff09;2.2 Spring IoC使用2.3 IoC和DI2.4 DI依赖注入Spring容器通过反射方法实现属性注入有三种方式1. set方法注入2. 构造器注入 2.5 …

禁止打开浏览器时弹出 internet explorer 11 停用的通知

计算机管理&#xff08;我的电脑图标上右键&#xff09; - 管理模板 - windows 组件 - internet explorer 启用隐藏 internet explorer 11 停用通知&#xff0c;如下图所示

使用Valgrind工具套件中的Massif监测C++程序堆内存使用

Valgrind是一款用于内存调试、内存泄漏检测以及线程问题分析的套件。它由一系列的工具组成,适用于Linux、macOS等操作系统。下面简要介绍几个主要的Valgrind工具: Memcheck 这是Valgrind最常用的工具,用于检测程序中的内存错误,包括非法内存读写、使用未初始化的内存等。Cache…