【刷题汇总 -- 爱丽丝的人偶、集合、最长回文子序列】
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…...

测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...

Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
服务器--宝塔命令
一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行! sudo su - 1. CentOS 系统: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...

如何应对敏捷转型中的团队阻力
应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中,明确沟通敏捷转型目的尤为关键,团队成员只有清晰理解转型背后的原因和利益,才能降低对变化的…...
嵌入式常见 CPU 架构
架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集,单周期执行;低功耗、CIP 独立外设;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel(原始…...
redis和redission的区别
Redis 和 Redisson 是两个密切相关但又本质不同的技术,它们扮演着完全不同的角色: Redis: 内存数据库/数据结构存储 本质: 它是一个开源的、高性能的、基于内存的 键值存储数据库。它也可以将数据持久化到磁盘。 核心功能: 提供丰…...

Linux中《基础IO》详细介绍
目录 理解"文件"狭义理解广义理解文件操作的归类认知系统角度文件类别 回顾C文件接口打开文件写文件读文件稍作修改,实现简单cat命令 输出信息到显示器,你有哪些方法stdin & stdout & stderr打开文件的方式 系统⽂件I/O⼀种传递标志位…...

链式法则中 复合函数的推导路径 多变量“信息传递路径”
非常好,我们将之前关于偏导数链式法则中不能“约掉”偏导符号的问题,统一使用 二重复合函数: z f ( u ( x , y ) , v ( x , y ) ) \boxed{z f(u(x,y),\ v(x,y))} zf(u(x,y), v(x,y)) 来全面说明。我们会展示其全微分形式(偏导…...