当前位置: 首页 > news >正文

【刷题汇总 -- 压缩字符串(一)、chika和蜜柑、 01背包】

C++日常刷题积累

  • 今日刷题汇总 - day018
    • 1、压缩字符串(一)
      • 1.1、题目
      • 1.2、思路
      • 1.3、程序实现
    • 2、chika和蜜柑
      • 2.1、题目
      • 2.2、思路
      • 2.3、程序实现
    • 3、 01背包
      • 3.1、题目
      • 3.2、思路
      • 3.3、程序实现 -- dp
    • 4、题目链接

今日刷题汇总 - day018

1、压缩字符串(一)

1.1、题目

在这里插入图片描述

1.2、思路

读完题,知道让处理一组英文字符串,完成压缩功能,压缩规则满足保持字符串的顺序将多余相邻的字符压缩以数字字符表示当前被压缩的字母个数,其中注意如果只有一个字符,1不用写。通过分析示例和题目规则,想到蛮力法,遍历字符串利用一个新字符串retstr接收遇到的字母进行尾插,统计相邻字母的个数到count中,然后转字符串尾插在字母后,然后处理重复的字母直接++count次不作任何处理知道遇见下一个不同字母即可,然后count小于1也不用管,直到遍历结束即可。接下来,就是程序实现。

1.3、程序实现

按照思路分析,完成程序即可。主要在于处理一些细节如边界控制,相同的直接统计个数和让遍历的下标++,然后处理大于1的个数尾插使用to_string(count),另外需要重置计数器为1,才进入下次循环。

class Solution {  
public:  string compressString(string param) {  string retstr;  int count = 1;  for (int i = 0; i < param.size(); i++){  while (i + 1 < param.size() && param[i + 1] == param[i]){  count++;  i++;  }  retstr += param[i];  if (count > 1) {   retstr += to_string(count);                  }  count = 1; // 重置计数器  }  return retstr;  }  
};

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

2、chika和蜜柑

2.1、题目

在这里插入图片描述

2.2、思路

读完题,想到跟上次比那名居的桃子类似,但是这里并没有限制持续时间等条件,这里是任意挑选k不使用滑动窗口,所以利用排序的思想,将每个橘⼦按照甜度由⾼到低排序,相同甜度的橘⼦按照酸度由低到⾼排序。满足尽可能地甜度高。然后提取排序后的前k个橘⼦就得到最好地选择方案了。那么接下来,就是程序实现。

2.3、程序实现

首先,按照题目要求完成输入n,k代表蜜柑总数和chika吃的蜜柑数量,然后这里为了方便描述甜度和酸度这里使用pair,然后就可以输入数组arr中即可。

#include <iostream>
#include <algorithm>using namespace std;
const int N = 2e5 + 10;
typedef pair<int, int> PII; // <酸度,甜度> 
PII arr[N];int main()
{int n, k;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//求前k个蜜柑甜度和酸度和return 0;
}

接下来就是排序地思路,需要满足题目中尽可能地甜和不酸,那么这里可以采用lambda表达式与sort结合的方式处理即可。lambda实际上可以理解为仿函数,使其sort的执行逻辑更加方便了。

[&] 表示捕获列表,这里使用 & 表示捕获外部作用域中所有变量的引用。但在这个 lambda 表达式中,实际并没有使用到外部变量,所以 [](不捕获任何变量)或 [&] 都是可以的。
(const PII& a, const PII& b) 是 lambda 表达式的参数列表,表示这个函数对象接受两个 PII 类型的常量引用作为参数。
函数体 {} 中定义了比较逻辑:首先比较两个元素的甜度(a.second 和 b.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;});

否则,不然就自己单独再封装一个比较逻辑的函数,回调到sort也行,一样的,所以综合考虑lambda这里会更好。也是处理类似逻辑比较常用的方法之一。

// 自定义比较函数  
bool compare(const PII& a, const PII& b) {  if (a.second != b.second) {  return a.second > b.second; // 甜度降序  } else {  return a.first < b.first; // 甜度相同时,酸度升序  }  
}  // 使用自定义比较函数进行排序  
sort(arr, arr + n, compare);

除此之外,对于自定义封装的函数又恰好是比较元组类型的值,可以使用tie的逻辑实现,但是要清楚比较对象之间的关系。

注意包含头文件#include < tuple > // 对于 std::tie

// 自定义比较函数  
bool compare(const PII& a, const PII& b) {  return tie(b.second, a.first) < tie(a.second, b.first);  // 注意这里的 b.second 和 a.first 是为了得到甜度降序,酸度相同则酸度升序的效果  // 但实际上,对于这种情况,更直观的方式直接比较定义,更具有阅读性 
}  
// 使用自定义比较函数进行排序  
sort(arr, arr + n, compare);

最后,遍历前k个蜜柑获取甜度和酸度和,然后按照题目要求的格式输出即可。

#include <iostream>
#include <algorithm>using namespace std;
const int N = 2e5 + 10;
typedef pair<int, int> PII; // <酸度,甜度> 
PII arr[N];int main()
{int n, k;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;
}

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

3、 01背包

0/1背包详解参考

3.1、题目

在这里插入图片描述

3.2、思路

读完题知道,0/1背包问题是算法课的经典题型了,通常涉及贪心和dp动态规划法,简单说就是尽可能让包不超重情况下,装最多的物品。所以这里分析题目和示例得知,采用动态规划法分析:状态表示和状态转移方程。
状态表示:dp[i][j]:表示从前 i 个物品中挑选,总体积不超过 j 的情况下,最⼤重量是多少。
推导状态转移方程,根据「最后⼀步」的状况,需要分情况讨论:
(1)、当第i个物品不被选时,就是i-1个物品中挑选,且体积不超过j,此时满足dp[i][j] = d[i-1][j];
(2)、当选择第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])
那么接下来,就是程序实现。

3.3、程序实现 – dp

首先,题目已经给了几个参数:

int V 表示背包的最大容量。
int n 表示物品的数量。
vector<vector >& vw 是一个二维向量,其中vw[i][0]表示第i个物品的重量,vw[i][1]表示第i个物品的价值。

然后按照思路分析的需求定义dp数组,然后,在内层循环中依次放入物品,对于每个容量j,如果当前容量j大于等于当前物品的重量vw[i][0],则有两种选择:
1.不装入当前物品,此时背包的价值为dp[j](即前i-1个物品在容量j下的最大价值)。
2.装入当前物品,此时背包的价值为dp[j - vw[i][0]] + vw[i][1](即前i-1个物品在容量j - vw[i][0]下的最大价值,加上当前物品的价值)。
使用max函数比较这两种选择,取较大值作为dp[j]的值,即dp[j] = max(dp[j], dp[j - vw[i][0]] + vw[i][1]);。
最终,dp[V]存储的就是在背包容量为V时,能够装载的最大价值,将其作为函数的返回值。

class Solution {public:int dp[1010] = { 0 };int knapsack(int V, int n, vector<vector<int> >& vw) {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];}
};

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

4、题目链接

🌟压缩字符串(一)
🌟chika和蜜柑
🌟01背包

相关文章:

【刷题汇总 -- 压缩字符串(一)、chika和蜜柑、 01背包】

C日常刷题积累 今日刷题汇总 - day0181、压缩字符串(一)1.1、题目1.2、思路1.3、程序实现 2、chika和蜜柑2.1、题目2.2、思路2.3、程序实现 3、 01背包3.1、题目3.2、思路3.3、程序实现 -- dp 4、题目链接 今日刷题汇总 - day018 1、压缩字符串(一) 1.1、题目 1.2、思路 读完…...

《Exploring Aligned Complementary Image Pair for Blind Motion Deblurring》

这篇论文的标题《Exploring Aligned Complementary Image Pair for Blind Motion Deblurring》可以翻译为《探索对齐的互补图像对用于盲运动去模糊》。从标题可以推断,论文的焦点在于开发一种算法或技术,利用成对的图像来解决运动模糊问题,特别是在不知道模糊核(即造成模糊…...

vue2学习笔记9 - 通过观察vue实例中的data,理解Vue中的数据代理

接着上一节&#xff0c;学一学vue中的数据代理。学vue这几天&#xff0c;最大的感受就是&#xff0c;名词众多&#xff0c;听得发懵。。不过&#xff0c;深入理解之后&#xff0c;其实说得都是一回事。 在Vue中&#xff0c;数据代理是指在实例化Vue对象时&#xff0c;将data对…...

04 Git与远程仓库

第4章&#xff1a;Git与远程仓库 一、Gitee介绍及创建仓库 一&#xff09;获取远程仓库 ​ 使用在线的代码托管平台&#xff0c;如Gitee&#xff08;码云&#xff09;、GitHub等 ​ 自行搭建Git代码托管平台&#xff0c;如GitLab 二&#xff09;Gitee创建仓库 ​ gitee官…...

数据库之表的查询

一.新建表&#xff1a; mysql> create table t_worker(-> department_id int(11) not null comment部门号,-> worker_id int(11) primary key not null comment职工号,-> worker_date date not null comment工作时间,-> wages float(8,2) not null comment工资,…...

String 和StringBuilder字符串操作快慢的举例比较

System.currentTimeMillis(); //当前时间与1970年1月1日午夜UTC之间的毫秒差。public class HelloWorld {public static void main(String[] args) {String s1 "";StringBuilder s2 new StringBuilder("");long time System.currentTimeMillis();long s…...

Java代码基础算法练习-竞猜卡片值-2024.07.22

任务描述&#xff1a; 小米和小王玩竞猜游戏&#xff1a;准备7张卡片包含数字2、3、4、5、6、7、8&#xff0c;从中抽出2张&#xff08;有 顺序之分&#xff0c;抽2、3跟抽3、2是两种情况&#xff09;&#xff0c;猜2张卡片的和&#xff0c;如果是奇数&#xff0c;则猜对。小米…...

Python爬虫-淘宝搜索热词数据

前言 本文是该专栏的第70篇,后面会持续分享python爬虫干货知识,记得关注。 在本专栏之前,笔者有详细针对“亚马逊Amazon搜索热词”数据采集的详细介绍,对此感兴趣的同学,可以往前翻阅《Python爬虫-某跨境电商(AM)搜索热词》进行查看。 而在本文,笔者将以淘宝为例,获取…...

Leetcode二分搜索法浅析

文章目录 1.二分搜索法1.1什么是二分搜索法&#xff1f;1.2解法思路1.3扩展 1.二分搜索法 题目原文&#xff1a; 给定一个 n 个元素有序的&#xff08;升序&#xff09;整型数组 nums 和一个目标值 target &#xff0c;写一个函数搜索 nums 中的 target&#xff0c;如果目标值…...

昇思25天学习打卡营第24天|ResNet50迁移学习

课程打卡凭证 迁移学习 迁移学习是机器学习中一个重要的技术&#xff0c;通过在一个任务上训练的模型来改善在另一个相关任务上的表现。在深度学习中&#xff0c;迁移学习通常涉及在一个大型数据集&#xff08;如ImageNet&#xff09;上预训练的模型上进行微调&#xff0c;以便…...

Shell 构建flutter + Navtive 生成IPA

具体实现: #1. 在工程的根目录下,建立文件夹build_iOS文件,在此文件下建立build_iOS.sh的文件,把以下内容copy进sh文件;build_iOS.sh 就是第5步之后整个的脚本内容。 #2. 进入build_iOS.sh 文件的目录; #3. 在build_iOS 文件夹配置打包的DEVELOPExportOptionsPlist…...

python gradio 的输出展示组件

HTML&#xff1a;展示HTML内容&#xff0c;适用于富文本或网页布局。JSON&#xff1a;以JSON格式展示数据&#xff0c;便于查看结构化数据。KeyValues&#xff1a;以键值对形式展示数据。Label&#xff1a;展示文本标签&#xff0c;适用于简单的文本输出。Markdown&#xff1a;…...

SwiftUI 6.0(Xcode 16)新 PreviewModifier 协议让预览调试如虎添翼

概览 用 SwiftUI 框架开发过应用的小伙伴们都知道&#xff0c;SwiftUI 中的视图由各种属性和绑定“扑朔迷离”的缠绕在一起&#xff0c;自成体系。 想要在 Xcode 预览中泰然处之的调试 SwiftUI 视图有时并不是件容易的事。其中&#xff0c;最让人秃头码农们头疼的恐怕就要数如…...

STM32被拔网线 LWIP的TCP无法重连解决方案

目录 一、问题描述 二、项目构成 三、问题解决 1.问题代码 2.解决思路 3.核心代码&#xff1a; 四、完整代码 1.监测网口插入拔出任务 2.TCP任务 3.创建tcp任务 4.删除tcp任务 五、总结 一、问题描述 最近遇到一个问题&#xff0c;就是我的stm32设备作为tcp客户端…...

Linux下开放指定端口

比如需要开放82端口&#xff1a; #查询是否开通 firewall-cmd --query-port82/tcp#开放端口82 firewall-cmd --zonepublic --add-port82/tcp --permanent#重新加载防火墙 firewall-cmd --reload...

亚马逊测评行为的识别与防范:教你如何搭建安全的测评环境

亚马逊平台以其严格的内部系统和精密的买家信息对比机制而闻名。一旦发现买家存在不当评价行为&#xff0c;系统会立即展开深入的调查&#xff0c;追溯其所有的购买和评价记录。如果确认该买家存在补评价的行为&#xff0c;那么他/她之前留下的所有评价都可能会被系统自动删除。…...

如何通过成熟的外发平台,实现文档安全外发管理?

文档安全外发管理是企业信息安全管理的重要组成部分&#xff0c;它涉及到企业向外发送的文件&#xff0c;需要进行严格的控制和管理&#xff0c;防止敏感或机密信息的泄露。以下是一些关键考虑因素&#xff1a; 文件外发的挑战&#xff1a;企业在文件外发时面临的主要挑战包括…...

SCI一区级 | Matlab实现SSA-CNN-GRU-Multihead-Attention多变量时间序列预测

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.【SCI一区级】Matlab实现SSA-CNN-GRU-Multihead-Attention麻雀算法优化卷积门控循环单元融合多头注意力机制多变量时间序列预测&#xff0c;要求Matlab2023版以上&#xff1b; 2.输入多个特征&#xff0c;输出单个…...

Mysql中的几种常见日志

引言 本文是对Mysql中几种常见日志及其作用的介绍 一、error log&#xff08;错误日志&#xff09; MySQL 中的 error log&#xff08;错误日志&#xff09;是一种非常重要的日志类型&#xff0c;它记录了 MySQL 服务器在启动、运行及关闭过程中遇到的所有重要事件、错误信…...

2024年7月22日(nfs samba)

一、webserver 服务器&#xff1a;作用是发布nginx的web项目 1、安装nginx&#xff08;只下载不安装&#xff09; [rootweb_server ~]# yum -y install --downloadonly --downloaddir./soft/ nginx 2、配置一个本地的nginx仓库 [rootweb_server ~]# yum -y install createrepo…...

黑龙江网络安全等级保护测评策略概述

一、简介 黑龙江省网络安全等级保护测评策略是为了保障信息系统安全稳定运行&#xff0c;根据《网络安全法》和相关国家标准制定的综合性安全评估和加固过程。该策略不仅要求企业和机构明确自身信息系统的安全等级&#xff0c;还指导其实施相应的技术防护与管理措施&#xff0…...

笔记 7 :linux 011 注释,函 bread () , get_hash_table () , find_buffer ()

&#xff08;57&#xff09;接着介绍另一个读盘块的函数 bread&#xff0c;以及释放 bh 的函数 brelse&#xff08; &#xff09;&#xff1a; &#xff08;58&#xff09;因为 函数 get_blk&#xff08;&#xff09;大量调用了其它函数&#xff0c;一版面列举不完&#xff0c;…...

vscode配置latex环境制作【文档、简历、resume】

vscode配置latex环境制作【文档、简历、resume】 1. 安装Tex Live及vscode插件 可以参考&#xff1a;vscode配置latex环境制作beamer ppt 2. 添加vscode配置文件 打开vscode&#xff0c;按下Ctrl Shift P打开搜索框&#xff0c;搜索Preference: Open User Settings (JSON…...

如何学习Spark:糙快猛的大数据之旅

作为一名大数据开发者,我深知学习Spark的重要性。今天,我想和大家分享一下我的Spark学习心得,希望能够帮助到正在学习或准备学习Spark的朋友们。 目录 Spark是什么?学习Spark的"糙快猛"之道1. 不要追求完美,在实践中学习2. 利用大模型作为24小时助教3. 根据自己的节…...

交换机(Switches)和桥(Bridges)的区别

交换机&#xff08;Switches&#xff09;和桥接器&#xff08;Bridges&#xff09;在网络和通信领域中都起着重要作用&#xff0c;它们有一些共同点&#xff0c;但也有一些显著的区别&#xff1a; 工作层次&#xff1a; 桥接器&#xff08;Bridges&#xff09;&#xff1a;桥接…...

基于springboot+vue的汽车租赁管理系统

摘要 在当今快速发展的数字化时代&#xff0c;汽车租赁行业作为现代服务业的重要组成部分&#xff0c;正面临着前所未有的机遇与挑战。为提升管理效率、优化用户体验并促进业务增长&#xff0c;我们设计并实现了一套基于Spring Boot后端框架与Vue.js前端技术的汽车租赁管理系统…...

《0基础》学习Python——第二十二讲__网络爬虫/<5>爬取豆瓣电影封面图

一、爬取豆瓣电影的图片封面 1、经过上节课我们所爬取的豆瓣电影的电影名、年份、国家、导演、主演、剧情&#xff0c;那么接下来我们将学习如何去爬取这些电影的图片&#xff0c;并将这些图片存放在文件夹中。 2、过程实现&#xff1a; 2.1、获取网页源码 首先还是和爬取电影名…...

全新UI自助图文打印系统小程序源码/自助云打印机前后端源码

全新UI自助图文打印系统小程序源码&#xff0c;自助云打印机前后端源码。最新的自助图文打印系统和证件照云打印小程序源码采用了PHP作为后端开发语言&#xff0c;旨在为用户提供全面的自助打印服务。 这些服务覆盖了多种文件格式&#xff0c;包括文档、图片、表格等。除此之外…...

yolo5图片视频、摄像头推理demo

yolo5图片、视频推理demo 图片 import torch# 加载预训练模型 model torch.hub.load(./yolo5, custom, pathyolov5s.pt, sourcelocal)# 加载图片 img 1.jpg# 进行推理 results model(img)# 解析结果 detections results.xyxy[0].cpu().numpy() # [x1, y1, x2, y2, confid…...

Scala学习笔记19: 隐式转换和隐式参数

目录 第十九章 隐式转换和隐式参数1- 隐式转换1. 隐式准换函数: 施展魔法的咒语2. 隐式类: 为已有类型添加魔法3. 隐式转换规则: 魔法生效的条件4. 举例说明: 见证魔法的时刻5. 注意事项: 谨慎使用魔法 2. 隐式参数1. 语义: 隐藏在背后的参数2. 使用 隐式参数的方式2.1 隐式值:…...

wordpress 图片服务器配置/百度网站推广价格查询

登录远程SQL服务器 一 看ping 服务器IP能否ping通。 这个实际上是看和远程sql server 2000服务器的物理连接是否存在。 如果不行&#xff0c;请检查网络&#xff0c;查看配置&#xff0c;当然得确保远程sql server 2000服务器的IP拼写正确。 二 在Dos或命令行下输入telnet …...

wordpress主题需要ftp/制作公司网站的步骤

weblogic8.1 5 ip 限制 报错信息如图所示&#xff1a; 解决办法&#xff1a;此weblogic 未破解&#xff0c;去网上下载破解包&#xff0c;然后放到 copy weblogic_sp.jar to $WL_HOME/server/lib/ copy license.bea to $BEA_HOME 此目录下即可。 本人资源里面有 weblogic 8.…...

大连最新消息今天/2022年搜索引擎优化指南

其实技术人和大众一样, 只是多了一层要与电脑交流的身份罢了. 而这样的一层应该是使得我们的生活更加的色彩化才是. 于是又注册了这个名为”左手代码”的订阅号. 始于代码, 又不仅仅是代码. 我想这才应该是一个技术人的初心吧. 2014年的那个暑假, 正好是我大学二年级结束, 或许…...

cm域名网站/成人馆店精准引流怎么推广

某培训机构的课程表&#xff0c;不想去培训的&#xff0c;可以按照这个自学。 1 第一阶段JAVASCRIPT高级 1 1 JavaScript高级 1 1 1 call、apply、bind、new等原理解析1 1 2 原型链深入1 1 3 闭包深入1 1 4 执行上下文和作用域链1 1 5 作用域链1 2 ES6深入学习 1 2 1 常量1 2 2…...

商务网站规划与建设/网络营销的主要内容有哪些

http://www.lydsy.com/JudgeOnline/problem.php?id3432 题目说要相互可达&#xff0c;但是只需要从某个点做bfs然后判断其它点是否可达即可。 原因太简单了。。。。。因为它是abs 所以我们二分D&#xff0c;然后判断即可 #include <cstdio> #include <cstring> #i…...

传媒大学附近网站建设公司/b站推广网站入口mmm

本文讲解如何通过ElementTree来操作XML&#xff1b; 1.引入库需要用到3个类&#xff0c;ElementTree&#xff0c;Element以及建立子类的包装类SubElement from xml.etree.ElementTree import ElementTreefrom xml.etree.ElementTree import Elementfrom xml.etree.ElementTree …...