2022年3月10日

摘要: 今天要介绍的是yxc都说是特别牛逼的一种算法,对于处理字符串问题十分的有用! 我们先大概的简介一下这个算法,我们在之前的普通哈希中我们已经知道哈希是需要定义一个哈希函数来使一个比较大的值域映射到一个较小的区间中,但是有可能有多个值映射到同一个值上,所以我们为了处理这样的冲突,我们分别创造了开放寻址法 阅读全文

posted @ 2022-03-10 15:31 ZheyuHarry 阅读(212) 评论(0) 推荐(1) 编辑

2022年3月9日

摘要: 这里将会引入一种哈希表的数据结构,粗看之下我们会觉得这个的形式特别像我们之前学过的离散化,就是将一个极大的值域映射到一个相对小的空间中以便我们的查询和删除。但是值得注意的是,离散化保序而哈希表不保序。就比如我们之前学到的离散化的求区间和,这个是需要保存其序列的,我们是对应的去求其某一段范围之内的和, 阅读全文

posted @ 2022-03-09 20:13 ZheyuHarry 阅读(39) 评论(0) 推荐(1) 编辑

2022年3月4日

摘要: 来源:Atcoder ARC 136 B - Triple Shift (atcoder.jp) 题解:这道题我们不可能去硬模拟(大多数这种题都不能这样去模拟的),然后我们就要去发现特性, 发现把 ai ai+1 ai+2 变成 ai+2 ai+1 ai 的过程,并不改变这个数组中逆序对的奇偶性。 阅读全文

posted @ 2022-03-04 22:58 ZheyuHarry 阅读(58) 评论(0) 推荐(1) 编辑

摘要: 来源:牛客小白月赛45 C-山楂_牛客小白月赛45 (nowcoder.com) 题目:众所周知,清楚姐姐最近迷上了一个老年游戏“山楂串”(点进去可以玩)这个游戏中我们可以将3或4个iii级糖果合并,升级成为一个高一级的糖果并且获得x∗ix*ix∗i点积分,xxx为消耗同级糖果的数量,iii为你消耗 阅读全文

posted @ 2022-03-04 22:19 ZheyuHarry 阅读(142) 评论(0) 推荐(0) 编辑

2022年2月28日

摘要: 并查集被很多OIer认为是最简洁而优雅的数据结构之一,主要用于解决一些元素分组的问题。它管理一系列不相交的集合,并支持两种操作: 合并(Union):把两个不相交的集合合并为一个集合。 查询(Find):查询两个元素是否在同一个集合中。 当然,这样的定义未免太过学术化,看完后恐怕不太能理解它具体有什 阅读全文

posted @ 2022-02-28 22:17 ZheyuHarry 阅读(29) 评论(0) 推荐(0) 编辑

2022年2月27日

摘要: 字典树(Trie)是一个比较简单的数据结构,也叫前缀树,用来存储和查询字符串。 具体是以怎样的存储方式呢,如图: 我们可以发现,正如其别名前缀树一样,具有相同前缀的字符串共享同一个树枝干,直到不同的地方才会分开来 具体对这个字典树的讲解,我们便分析板子边考虑: 835. Trie字符串统计 - Ac 阅读全文

posted @ 2022-02-27 23:17 ZheyuHarry 阅读(42) 评论(0) 推荐(0) 编辑

2022年2月26日

摘要: 我们在前面已经用数组模拟过栈和队列去执行一些基本操作了,然后呢,我们这里引入单调栈和单调队列的概念 单调栈和单调队列顾名思义我们知道这个栈和这个队列中的元素是单调递增(递减)的,那么这些具体能用来处理哪些问题呢? 单调栈的应用:单调栈则主要用于 解决NGE问题(Next Greater Elemen 阅读全文

posted @ 2022-02-26 23:04 ZheyuHarry 阅读(78) 评论(0) 推荐(0) 编辑

2022年2月25日

摘要: KMP算法是一种用于字符串匹配的算法,我们在介绍KMP算法之前,我们先介绍一下字符串匹配的朴素算法: 题目:有长度为N的字符串P , 长度为M的字符串S , 问 P在S中匹配项的起始位置: 双重循环,遍历S数组,每遇到一个新的S[i] 就要从 P[1]重新开始判断是否匹配,相当于一层一层的往后靠:’ 阅读全文

posted @ 2022-02-25 22:15 ZheyuHarry 阅读(39) 评论(0) 推荐(0) 编辑

2022年2月22日

摘要: //请注意,从这里开始讲的数据结构更多的是为了理解算法而存在的,可能讲的不是很完整 链表是一种比较特殊的数据结构,就像一条锁链一样链接起来。 通常,我们会把链表用一个结构体+指针的方式来存储数据, new的底层涉及内存分配,调用构造函数,指针转换等多种复杂且费时的操作。一秒大概能new1w次左右。 阅读全文

posted @ 2022-02-22 17:32 ZheyuHarry 阅读(55) 评论(0) 推荐(0) 编辑

摘要: 离散化,把无限空间中有限的个体映射到有限的空间中去,以此提高算法的时空效率。 离散化是程序设计中一个常用的技巧,它可以有效的降低时间复杂度。其基本思想就是在众多可能的情况中,只考虑需要用的值。离散化可以改进一个低效的算法,甚至实现根本不可能实现的算法。要掌握这个思想,必须从大量的题目中理解此方法的特 阅读全文

posted @ 2022-02-22 10:11 ZheyuHarry 阅读(42) 评论(0) 推荐(0) 编辑