自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(128)
  • 收藏
  • 关注

原创 unordered_map与unordered_set的实现

对于哈希的底层,最主要的逻辑还是链地址法 哈希桶的实现

2024-08-13 11:48:05 709

原创 红黑树的实现及测试

4. 对于每个结点,从该结点到其所有后代叶结点的简单路径上,均包含相同数目的黑色结点。对于红黑树来说,最重要的依旧是插入操作,与AVL树不同的是,一个是插入完后。来分析 -> 即 p 是位于左还是位于右,操作起来是一样的,只不过要分开写。3. 如果一个节点是红色的,则它的两个孩子结点是黑色的。5. 每个叶子结点都是黑色的(此处的叶子结点指的是空结点)可以先记录最左边一条路的黑色节点个数,然后去递归每一条路,最后显示的结果也是平衡,那就大概率没有逻辑上的问题了。,若不相同,则返回false,递归同时,

2024-08-01 19:40:42 650

原创 AVL树的实现及测试

这里我实现的AVL并不是一个完全泛型,而是用的一个。

2024-07-28 16:38:54 941

原创 Linux进程(1)(结构-操作系统-进程)

所以凡是要对特定的对象进行管理:都是。

2024-07-05 17:09:11 1282

原创 Linux-gdb

gdb的使用及其常用指令

2024-07-03 21:20:41 342

原创 栈和队列以及优先级队列

他的底层结构为堆,因此与堆的实现非常相似,无非就是加上了一层封装。栈的实现非常简单,因为所有函数都可以去调用,适配器默认为。在堆中最重要的两个结构无非就是。与栈的实现类似,只不过是。

2024-07-01 18:45:39 169

原创 二叉搜索树的实现与测试

BSTree(二叉搜索树)是一个神奇的数据结构,其的特点是,左子树的所有值比根小,而右子树的所有值比根大根据这种特性,我们可以从该结构中快速的搜索一个数的存在,速度则为树的高度次。

2024-07-01 13:10:26 438

原创 C++笔试强训day42

若种类的范围为 【1,x】的话,则满足条件的数组区间内方案数则为。每个值代表一种面值的货币,每种面值的货币可以使用任意张。,因此可以将种类范围想办法变为【1,x】,最后用。因为b >= a,所以可以在遍历数组的时候。滑动窗口遍历数组:(

2024-06-09 22:40:24 1166 1

原创 C++笔试强训day41

【代码】C++笔试强训day41。

2024-06-08 19:06:16 504

原创 C++笔试强训day40

最后去最小值即可。

2024-06-06 17:25:48 1155 2

原创 C++笔试强训day39

看输出描述即可知输出次数最多的那个字母即可。即为哈夫曼编码:与该篇中的模版题极为相似-》当然,也可以进行空间优化。搞清楚他的状态表示{

2024-06-05 20:13:47 1185

原创 C++笔试强训day38

dp[i][j] :从前i个中挑选,总和 % k == j时,最大总和为多少。有了这几点,状态转移方程就非常好推了,只需要注意一下非法值的初始化即可。一开始都可以想到将数组的前x个数拿出来排降序输出第二个数即可。因此就可以推出前一个状态为的 j 为 j - a[i] % k。1.顺时针旋转180° -》列对称一遍再行对称一遍。即(j - a[i] % k + k)% k(又因为可能会出现相减之后出现负数,因此可以用。2.关于行镜像 -》如题意一样,行对称即可。

2024-06-04 21:23:43 823

原创 C++笔试强训day37

如果 A 字符串能够旋转之后得到 B 字符串的话,在 A 字符串倍增之后的新串中,⼀定是可以找到 B 字符串的。因此,我们仅需让 A 字符串倍增,然后查找 B 字符串即可。

2024-06-01 15:37:56 875

原创 C++笔试强训day36

然后就是状态转移方程:dp[x] = f[x], (因为这时候遍历到的数就是 x,

2024-05-29 20:04:08 2447

原创 C++笔试强训day35

b[j]时,在这三种情况中取最小值即可,因为有重复,所以可以简化,最后变为。根据这个规律,找到最后⼀次删除的起始位置的下标即可。,一开始我就看错了题目,直接双指针搜索了。当然,也有更简便的方法:(找规律)通过⼀两个例⼦的模拟,我们发现,

2024-05-28 19:40:57 982

原创 C++笔试强训day34

DFS:(我写的DFS目前还是没找到为什么有测试用例过不去)BFS / DFS(宽度 / 深度 优先遍历即可)BFS:(因为可以保证第一次找到的一定是最近的)提取题意,模拟一下即可。

2024-05-27 19:01:13 662

原创 C++笔试强训day33

若一个数从0 - > 1,那么则cnt++(cnt是窗口中字母的种类),若从1 - > 0,那么则cnt--。当cnt > 2时,就得出窗口了。然后就是找个合适的位置更新返回值。

2024-05-26 16:15:02 758

原创 C++笔试强训day32

然后若 i 的开始时间小于 end,则更新end = min(end,i的结束时间),{取最小值的原因是贪心(要选择尽可能多的活动数量)}很细节的一个地方是他的初始化,因为你不确定有没有负数,若是默认初始化(0),则会导致一个全为负数的数组中返回 0 ,这样是答案错误。现将其转化为回文数(这里用字符串存储比较方便转化),然后判断是否为素数即可。若 i 的开始时间大于或等于 end,直接让活动数 +1。因为状态表示是最后一个人必须,所以我们选取返回值时,若搞清楚了该题的状态表示,还是可以做一下题目的。

2024-05-25 11:59:38 929

原创 C++笔试强训day31

1.当全都选二人船时,最后有余数(即剩下一个人),大部分人都是分两种情况,要么他坐二人的,要么坐三人的,但是还有另一种情况,根据题意便可知,每次都要去取出目前让自己舒适感最低的口罩,所以可以用优先队列来实现。2.同样,都选三人船时,最后有余数,前面博客有类似题目 - 》(

2024-05-24 13:26:38 884

原创 C++笔试强训day30

两个数组之间的dp问题,主要是能搞清楚状态表示,后面就好思考了。数学找规律题,注意开long long即可,因为数据太大。

2024-05-22 16:30:26 606

原创 C++笔试强训day29

数学规律加上一点贪心(

2024-05-20 19:43:54 598

原创 C++笔试强训day28

DFS枚举就行,注意其中回溯、剪枝和返回等细节即可。另一种常规解法为树上dp动规。

2024-05-18 23:03:42 360

原创 C++笔试强训day27

【代码】C++笔试强训day27。

2024-05-17 23:02:38 443

原创 C++笔试强训day26

dp[i][1] 等价 f[i]dp[i][0] 等价 g[i]当然,也可以用二分来遍历。

2024-05-16 17:37:24 445

原创 C++笔试强训day25

我以为这个数组本就是有序的,所以直接开始遍历了,还导致找不出错在哪,这道题得先排序,再遍历。将题意变换为求是否能。

2024-05-16 16:54:12 520

原创 C++笔试强训day24

我的思路是构建二维前缀和,然后再遍历所有的子矩阵,但是我遍历子矩阵有错误,没遍历到全部,所有一直过不了。固定滑动窗口,每次都遍历长度为n / 2的窗口。判断是不是平衡⼆叉树。

2024-05-15 20:58:47 541

原创 C++笔试强训day23

将排序后的每个string扔进去,直接返回它的size即可。

2024-05-15 19:47:18 672

原创 C++笔试强训day22

更好求解,最后返回时返回V - dp[n][V]即可。遍历所有符合条件的匹配方法,找出。判断是否为2的n次方就好了。

2024-05-14 17:17:39 428

原创 C++笔试强训day21

方法一:一开始我想复杂了,其实用试错法去试(试多几种方法),最后发现可以直接交换该数和其后面的一个数即可。哈希表存储,从1 往 n 遍历,只要cnt[i]!= 0,就存入ret(数组)。简单叙述就是每个数的左右两边不能一个比他大,一个比他小。反之,就是要让每个数的左右两边数都大于或者都小于他。利用set的特性,直接读入,然后打印。一道动态规划 - 区间dp题目。放个⼩的之后,再放个⼤的。最后遍历数组打印即可。

2024-05-14 16:00:53 430

原创 C++笔试强训day20

若从0和n - 1往中间遍历,存在不相同,即可直接break返回 n (个数)。即这时个对称数,但是如果你取除第一个或最后一个外的所有字符,即可组成非对称。我认为这就是一道数学分析找规律题,暴力强解复杂度太高,易超时,解不出来。dp[i], 以i为结尾,可以表示的最大数值。除完之后有无余数,若有,则还可以再挨一次打。填完表后,遍历一遍表中的数,取出最大值即可。题目有要求要最大,所以为 n - 1。若全相同,则返回 n - 1。若字符全相同,则返回0。经此一役小红所向无敌。

2024-05-12 17:31:22 345

原创 C++笔试强训day19

我们可以从两边开始(一个下标为0, 一个下标为 n - 1)开始遍历,如果一路遍历下来,所有的。模拟就行,唯一可能是难点得就是gcd(最大公约数)中都有相同的字符,则返回Yes,若有一个没有则No。动态规划 - 路径问题。

2024-05-12 17:07:46 323

原创 C++笔试强训day18

比较规则是:首先比较第二个元素的值,如果它们不相等,则按照第二个元素的值从大到小排序;2.当数量超过 9 时,需要逐个拿出 n 的位数,如153次,需要拿出1、5、3三个数。,则按照第一个元素的值从小到大排序。1.数量为一个时不用输出个数。

2024-05-11 17:09:52 495

原创 C++笔试强训day17

存储快乐值和羞耻度的前缀和,然后快乐值总和 sum1 = h[r] - h[l - 1];羞耻度总和 sum2 = s[r] - s[l - 1];注意:要开long long,因为数据量太大。然后一遍一遍更新出maxh和mins和L即可。简单把他当成字符串遍历即可。

2024-05-11 16:09:20 430

原创 C++笔试强训day16

一个检查是否为质数的函数,一个检查是否为神奇数的函数。我的思路是遍历所有长度为n的子串,找到比例最高的一串。替换完之后别忘了后面的剩余字符。然后for循环遍历数组即可。注意细节:不要出现前导0。类似固定长度滑动窗口。

2024-05-10 09:31:04 448

原创 C++笔试强训day15

返回值则是g <= m, 因为大于m就不满足题意,小于m的话可以通过无限分组(拆开那些同一个声部)来实现。3.BFS遍历,取数出来 cout 然后,将该数连接的线去除。因为n是 >= m的,将n完全拆开是肯定可以拼凑出m组的。同时若出现入度为 1 的数,接着存入队列。一道拓扑排序模板题,了解过拓扑排序就能很简单写出来。数学找规律,找离 x 最近的完全平方数 y。从左往右遍历大数据很有可能超时,这时就要去。2.将入度为 0 的数存入队列。,因为求的是最多小组人数。

2024-05-08 22:37:13 479

原创 C++笔试强训day14

据题意描述就是每次都取中间的值为水平值,所以我们可以。(注意,需要先排序,因为这样才能得到第二大的值)

2024-05-04 21:35:07 369

原创 C++笔试强训day13

如上图,若是多出一个C,必然不可能重排,即C的数量 >(n + 1) / 2的话,直接输出noi就行了。简单逻辑题,按照题目意思模拟就能过。找到填入规律就很好办,先。

2024-05-04 21:17:01 464

原创 C++笔试强训day12

则第i个位置的sh个数则为(i - 1位置的sh个数)加上(i - 1位置的s个数 * 1个h)。我的思路是找出长度差值,然后让长的先走差值步数,这样就可以让他们同时出发,我做的题目太少了,最多就做过两个状态的dp,结果就没有考虑dp方面。正解为多(3)状态dp问题,处理好初始化细节就可以。暴力枚举就行,也可以用哈希表,哈希更省一点时间。y[i] : 前 i 个数有几个shy。s[i] : 前 i 个数有几个s。h[i] :前 i 个数有几个sh。比如前i - 1个位置有n个s,mari和shiny。

2024-05-01 23:27:19 1043 1

原创 C++笔试强训day11

所以从第二天开始遍历,只要prices【i】 > prices【i - 1】就可以加到利润中去(当然你也可以一开始读取整个句子,逆置这个句子后,再去句子里将每个单词逆置。我的做法是用vector存储这些string然后逆置,方便高效且快捷。一开始很多人想的肯定是贪心,但是最后总会有几个样例过不了。细节:可多次卖出,但购买前必须卖出之前的。

2024-04-30 14:40:56 468

原创 C++栈和队列模拟

栈和队列所用的容器默认都为deque,这种容器可以看作是一种vector和list的中间性能容器。2.[ ]访问的效率不够极致。1.中间插入删除会很麻烦。

2024-04-30 08:57:25 251

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除