【刷题汇总 -- 爱丽丝的人偶、集合、最长回文子序列】
C++日常刷题积累
- 今日刷题汇总 - day021
- 1、爱丽丝的人偶
- 1.1、题目
- 1.2、思路
- 1.3、程序实现
- 2、集合
- 2.1、题目
- 2.2、思路
- 2.3、程序实现 -- set
- 3、最长回文子序列
- 3.1、题目
- 3.2、思路
- 3.3、程序实现 -- dp
- 4、题目链接
今日刷题汇总 - day021
1、爱丽丝的人偶
1.1、题目

1.2、思路
读完题,知道让我们将一个有序的身高序列重新排队,要求除了第一个和最后一个元素外,不能让x的前、后元素一个比它高,一个比它矮,求怎么摆能够满足上述条件并摆放所有玩偶。那么,分析题目和示例,得知,不能让x的前后具有相异性,那么要么全部比x大,要么全部比x小即可。既然如此,我第一个摆放最小的1,第二个摆放最大的n,再接着拜访次小的2,再接着摆放次大的n-1即可。发现这个规律后,就按照这个逻辑实现即可。接下来,就是程序实现。
1.3、程序实现
根据题目和思路分析,由于是有序序列,那么直接按照先放置小的,再放大的顺序循环即可。
#include <iostream>using namespace std;int main()
{int n;cin >> n;int left = 1;int right = n;while(left <= right){cout << left << " ";left++;if(left <= right){cout << right << " ";right--;}}return 0;
}


2、集合
2.1、题目

2.2、思路
读完题,知道要求实现两个集合的相加,其中相加之后的集合中不能出现相同元素。首先,能够想到得基本思想就是归并排序,先把A,B集合sort排序,然后进行归并排序,最后去重输出。那么既然如此,简化思路就是将A,B集合需要放入同一个容器中,然后排序+去重即可。恰好得是C++提供了一个set关联式容器,set作为一个容器也是用来存储同一数据类型的数据类型,并且能从一个数据集合中取出数据,在set中每个元素的值都唯一,而且系统能根据元素的值自动进行排序。需要注意的是set中元素的值不能直接被改变。
底层本质:C++ STL中标准关联容器set, multiset, map, multimap内部采用的就是一种非常高效的平衡检索二叉树:红黑树,也成为RB树(Red-Black Tree)。RB树的统计性能要好于一般平衡二叉树,所以被STL选择作为了关联容器的内部结构。
所以对于这道题,使用set可以完美解决问题。
2.3、程序实现 – set
首先,按照要求和思路分析,引入#include 头文件,然后采用预处理方式按照题目输入和插入到同一个容器s中,自动完成排序与去重,最后直接遍历输出即可。
#include <iostream>
#include <set>
using namespace std;int main()
{int n,m;cin >> n >> m;set<int> s;int A,B;for(int i = 0;i < n;i++){cin >> A;s.insert(A);}for(int i = 0;i < m;i++){cin >> B;s.insert(B);}for(auto num : s){cout << num << " ";}return 0;
}


3、最长回文子序列
3.1、题目

3.2、思路
读完题,知道跟之前做过的题连续子数组最大和类似,都不是固定长度的,可以是任意长度的可能,所以不采用滑动窗口而采用dp动态规划。求一个字符串中最长的回文子序列,其中,本题中子序列字符串任意位置删除k(len(s)>=k>=0)个字符后留下的子串。那么子序列是不定长的情况,所以动态规划法需要状态表示,以dp[i][j]表示,在第 [ i , j ] 区间的回文字符串最大长度,推导状态转移方程,当回文字符串长度为一个字符时,则 i 等于 j ,直接输出1即可,然后要求最大回文串,那么当字符串本身就是回文时就是最大长度,另外本身不是字符串的情况下,就又分为左边去掉一个字符组成的区间dp[i+1][j],右边去掉一个字符组成的区间dp[i][j-1]为次打区间,如果满足回文时就是最大回文。所以状态转移方程情况分为:
a、当i = j 的时候,只有⼀个字符,⻓度为1;
b、当i < j 的时候,分情况讨论:
(1)、str[i] == str[j]时:dp[i][j] = dp[i + 1][j - 1] + 2;
(2)、str[i] != str[j]时:dp[i][j] = max(dp[i + 1][j], dp[i][j - 1]);
另外注意初始化为了处理长度为1时的情况,所以置dp[i][i] = 1;表示每个单独的字符都是长度为1的回文子序列 和 返回值,长度为n的字符串满足[0,n)区间,所以输出是dp[0][n-1]即可。那么接下来就是,程序实现。
3.3、程序实现 – dp
首先根据思路分析得出即可
- 状态表⽰: dp[i][j] 表⽰:字符串[i, j] 范围内的最⻓回⽂⼦序列的⻓度;
- 状态转移⽅程:
a、当i = j 的时候,只有⼀个字符,⻓度为1;
b、当i < j 的时候,分情况讨论:
c、s[i] == s[j]:dp[i][j] = dp[i + 1][j - 1] + 2;
d、s[i] != s[j]:dp[i][j] = max(dp[i + 1][j], dp[i][j - 1]); - 初始化: dp[i][i] = 1 。
- 返回值: dp[0][n - 1] 。
#include <iostream>
#include <string>
using namespace std;int dp[1001][1001];int main()
{string str;cin >> str;int n = str.size();for(int i = n-1;i >= 0;i--){dp[i][i] = 1;for(int j = i + 1;j < n;j++){if(str[i] == str[j])dp[i][j] = dp[i+1][j-1] + 2;elsedp[i][j] = max(dp[i+1][j],dp[i][j-1]);}}cout << dp[0][n-1] << endl;return 0;
}


4、题目链接
🌟爱丽丝的人偶
🌟集合
🌟最长回文子序列
相关文章:
【刷题汇总 -- 爱丽丝的人偶、集合、最长回文子序列】
C日常刷题积累 今日刷题汇总 - day0211、爱丽丝的人偶1.1、题目1.2、思路1.3、程序实现 2、集合2.1、题目2.2、思路2.3、程序实现 -- set 3、最长回文子序列3.1、题目3.2、思路3.3、程序实现 -- dp 4、题目链接 今日刷题汇总 - day021 1、爱丽丝的人偶 1.1、题目 1.2、思路 …...
基于vue3 + vite产生的 TypeError: Failed to fetch dynamically imported module
具体参考这篇衔接: Vue3报错:Failed to fetch dynamically imported module-CSDN博客 反正挺扯淡的,错误来源于基于ry-vue-plus来进行二次开发的时候遇到的问题。 错误起因 我创建了一个广告管理页面。然后发现访问一直在加载中。报的是这样…...
批量自动添加好友,高效拓展人脉圈.
随着微信使用数量的不断增加,手动添加好友成为了一项耗时且繁琐的任务。为了帮助大家解决这个问题,下面分享一款高效的微信管理系统,它能够帮助你实现批量自动添加好友,极大提升了人脉拓展的效率。 这款微信管理系统可以同时管理多…...
Web开发:一个可拖拽的模态框(HTML、CSS、JavaScript)
目录 一、需求描述 二、实现效果 三、完整代码 四、实现过程 1、HTML 页面结构 2、CSS 元素样式 3、JavaScript动态控制 (1)获取元素 (2)显示\隐藏遮罩层与模态框 (3)实现模态框拖动效果 一、需求…...
【深度学习】fooocusapi,docker,inpainting图像
基础镜像制作来源 fooocusapi接口官方写的: docker run -d --gpusall \-e NVIDIA_DRIVER_CAPABILITIEScompute,utility \-e NVIDIA_VISIBLE_DEVICESall \-p 8888:8888 konieshadow/fooocus-api会下载一些模型,下载完后推这个镜像 docker commit 4dfd1…...
算法017:二分查找
二分查找. - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/binary-search/ 二分查找,其实是双指针的一种特殊情况,但是时间复杂度极低&#…...
谷粒商城实战笔记-37-前端基础-Vue-基本语法插件安装
文章目录 一,v-model1,双向绑定2,vue的双向绑定2.1 html元素上使用指令v-model2.2 model中声明对应属性2.3,验证view绑定modelmodel绑定view 完整代码 二,v-on1,指令简介2,在button按钮中添加v-…...
mybatis中的缓存(一级缓存、二级缓存)
文章目录 前言一、MyBatis 缓存概述二、一级缓存1_初识一级缓存2_一级缓存命中原则1_StatementId相同2_查询参数相同3_分页参数相同4_sql 语句5_环境 3_一级缓存的生命周期1_缓存的产生2_缓存的销毁3_网传的一些谣言 4_一级缓存核心源码5_总结 三、二级缓存1_开启二级缓存2_二级…...
实现自动化采购:食堂采购系统源码开发详解
本篇文章,笔者将详细介绍食堂采购系统的开发过程,从需求分析、系统设计到实现和测试,为您全面解析如何构建一个高效的自动化采购系统。 一、需求分析 1.采购计划管理 2.供应商管理 3.订单管理 4.库存管理 5.财务管理 6.数据分析与报告 …...
linux、windows、macos清空本地DNS缓存
文章目录 Linux:Windows:macOS: Linux: 对于使用systemd的操作系统(如CentOS 7、Ubuntu 16.04),可以使用以下命令重启systemd-resolved服务来清除缓存: sudo systemctl restart sys…...
领夹麦克风哪个品牌好,电脑麦克风哪个品牌好,热门麦克风推荐
在信息快速传播的时代,直播和视频创作成为了表达与交流的重要方式。对于追求卓越声音品质的创作者而言,一款性能卓越的无线麦克风宛如一把利剑。接下来,我要为大家介绍几款备受好评的无线麦克风,这些都是我在实际使用中体验良好…...
【第5章】Spring Cloud之Nacos服务注册和服务发现
文章目录 前言一、提供者1. 引入依赖2.配置 Nacos Server 地址3. 开启服务注册 二、消费者1. 引入依赖2.配置 Nacos Server 地址3. 开启服务注册 三、服务列表四、服务发现1. 获取服务列表2. 测试2.1 获取所有服务2.2 根据服务名获取服务信息 五、更多配置项总结 前言 本节通过…...
Springboot 启动时Bean的创建与注入(一)-面试热点-springboot源码解读-xunznux
Springboot 启动时Bean的创建与注入,以及对应的源码解读 文章目录 Springboot 启动时Bean的创建与注入,以及对应的源码解读构建Web项目流程图:堆栈信息:堆栈信息简介堆栈信息源码详解1、main:10, DemoApplication (com.xun.demo)2…...
单调栈(随缘复习到了,顺手刷了)
也是不知道为什么突然又复习到单调栈了,所以顺手刷了三道题,总结一下 P6503 [COCI2010-2011#3] DIFERENCIJA 思路:这题是要求每个子区间里面的最大值和最小值的差,我们一开始想的必然是纯暴力呀,但是一看这数据&#…...
学习测试10-3自动化 web自动化
web自动化 chrome驱动下载地址: https://registry.npmmirror.com/binary.html?pathchromedriver/ https://googlechromelabs.github.io/chrome-for-testing/#stable观察Google版本,下相应的驱动 运行代码试试,成功Google就会弹出 from se…...
安防视频监控EasyCVR视频汇聚平台修改配置后无法启动的原因排查与解决
安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台基于云边端一体化架构,兼容性强、支持多协议接入,包括国标GB/T 28181协议、部标JT808、GA/T 1400协议、RTMP、RTSP/Onvif协议、海康Ehome、海康SDK、大华SDK、华为SDK、宇视SDK、乐橙SDK、萤石云SD…...
爬虫学习2:爬虫爬取网页的信息与图片的方法
爬虫爬取网页的信息与图片的方法 爬取人物信息 import requestshead {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0" } # 这是get请求带参数的模式…...
MySQL定时备份数据,并上传到oss
1.环境准备 1.安装阿里云的ossutil 2.安装mysql 2.编写脚本 脚本内容如下 #!/bin/bash # 数据库的配置信息,根据自己的情况进行填写 db_hostlocalhost db_usernameroot db_passwordroot db_namedb_root # oss 存贮数据的bucket地址 bucket_namerbsy-backup-buck…...
极速删除 node_modules 仅3 秒()
今天教大家如何快速删除 node_modules 依赖的一个小秘诀,告别繁琐!!! 前言 作为前端开发者,相信大家都曾经历过删除 node_modules 文件夹时的漫长等待。 尤其是在处理那些依赖库繁多的项目时,删除操作…...
vue this.$refs 动态拼接
业务需要,refs是不固定的 <vxe-grid refgridWarehouse v-bind"gridWarehouseOptions" v-if"tableHeight" :height"tableHeight":expand-config"{iconOpen: vxe-icon-square-minus, iconClose: vxe-icon-square-plus}"c…...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...
Axios请求超时重发机制
Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...
算法:模拟
1.替换所有的问号 1576. 替换所有的问号 - 力扣(LeetCode) 遍历字符串:通过外层循环逐一检查每个字符。遇到 ? 时处理: 内层循环遍历小写字母(a 到 z)。对每个字母检查是否满足: 与…...
【Linux】Linux 系统默认的目录及作用说明
博主介绍:✌全网粉丝23W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...
MySQL JOIN 表过多的优化思路
当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...
保姆级【快数学会Android端“动画“】+ 实现补间动画和逐帧动画!!!
目录 补间动画 1.创建资源文件夹 2.设置文件夹类型 3.创建.xml文件 4.样式设计 5.动画设置 6.动画的实现 内容拓展 7.在原基础上继续添加.xml文件 8.xml代码编写 (1)rotate_anim (2)scale_anim (3)translate_anim 9.MainActivity.java代码汇总 10.效果展示 逐帧…...
针对药品仓库的效期管理问题,如何利用WMS系统“破局”
案例: 某医药分销企业,主要经营各类药品的批发与零售。由于药品的特殊性,效期管理至关重要,但该企业一直面临效期问题的困扰。在未使用WMS系统之前,其药品入库、存储、出库等环节的效期管理主要依赖人工记录与检查。库…...
Win系统权限提升篇UAC绕过DLL劫持未引号路径可控服务全检项目
应用场景: 1、常规某个机器被钓鱼后门攻击后,我们需要做更高权限操作或权限维持等。 2、内网域中某个机器被钓鱼后门攻击后,我们需要对后续内网域做安全测试。 #Win10&11-BypassUAC自动提权-MSF&UACME 为了远程执行目标的exe或者b…...
C++中vector类型的介绍和使用
文章目录 一、vector 类型的简介1.1 基本介绍1.2 常见用法示例1.3 常见成员函数简表 二、vector 数据的插入2.1 push_back() —— 在尾部插入一个元素2.2 emplace_back() —— 在尾部“就地”构造对象2.3 insert() —— 在任意位置插入一个或多个元素2.4 emplace() —— 在任意…...
