自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【TRIE字典树实现:400行】(模糊匹配 | AC自动机 | 多模式匹配 | 串排序 | 词频计数 | 相似度分析 | RAII模式 | 前缀比较 )

取代传统的pair< return_type, bool > 检索返回类型。范围库相关标准设施在代码简化的重要作用。中智能指针所有权的转交。使得代码较大程度复用。

2024-02-08 00:23:10 1371 2

原创 【二叉树的中序线索化】

【代码】【二叉树的中序线索化】

2024-03-19 19:40:55 93

原创 【Codeforces Round #406 (Div. 1) B. Legacy】(线段树 | 优化建图)

【代码】【Codeforces Round #406 (Div. 1) B. Legacy】(线段树 | 优化建图)

2024-03-19 19:40:10 188

原创 【HDU: Tunnel Warface】(线段树 | 连续区间计数 | 树上二分)

题目大意: 有N个连通地道,接下来有M个操作,* R -> 修复最近依次被炸毁的地道。* 数据范围:N, M <= 50000。* Q k -> 查询包括k的最长地道。* D x -> 炸掉x号地道。

2024-03-19 19:37:39 214

原创 【线段树的可持久化】(主席树 | 历史记录 | 版本回溯)

【代码】【线段树的可持久化】(主席树 | 历史记录 | 版本回溯)

2024-03-19 19:35:42 210

原创 【物理排序】(最小交换环 | 大体量表排序 | 泛型算法)

在表排序的过程中,实际上是不需要移动那些原始数据的,要移动的只是指向他们位置的那些指针。不移动元素本身,而只移动元素本身的排序方法,我们称之为“间接排序});++i)交换环:N个数字的排列由若干个独立的环组成。

2024-03-10 16:16:39 358

原创 【函数缓存 | 记忆化技术】(类型萃取 | 延迟计算 | hash | 计算优化 | 函数式编程 | 模板元编程)

这样,当相同的查询再次发生时,可以直接从缓存中获取结果,而无需再次访问数据库。这样,当相同的请求再次发生时,可以直接返回缓存中的结果,避免了不必要的网络延迟和开销。模板类,然后通过特化这个模板类,将返回类型和参数类型作为模板参数,从而能够获取函数的类型、返回值和参数的个数。,我们可以以一种统一的方式处理这些不同类型的函数对象,而无需针对每种类型编写特定的代码。,可以将之前计算过的结果缓存起来,以便在需要时快速重用,从而提高渲染速度和游戏性能。因此,可以使用记忆化来缓存推理结果,从而加速模型的响应速度。

2024-03-09 16:46:28 1193

原创 【线段树的简单封装】

【代码】【线段树的简单封装】

2024-03-07 19:40:16 370

原创 【算法随笔:HDU 3333 Turing tree】(线段树 | 离线 | 离散化 | 贪心)

near[i] < x, 意味着原数组最近一次出现value of a[i]不在该区间[x, y)内,也就意味着a[i]是区间中第一个出现的元素。每个区间可能有重叠,这时需要采用贪心思路和区间合并的思路,对区间左端点排序,依照次序依次处理询问区间。题目很简单,给出长度为N的数组,Q次询问,每次给出区间。枚举每个询问区间[x, y),对于a[i], 如果有。value of a[i]最后出现的下标。只需在更新过程中,同时维护当前时刻,预处理, 记录每个a[i]对应的。last[a[i]]有越界风险。

2024-03-05 16:29:20 538 1

原创 【算法随笔:luogu P3029 Cow Lineup S 】(双指针 | hash | 离散化 | 尺取 | 双端队列)

现有N头牛排成一排,这些牛其中包含,每个牛有现在要给这些牛拍一张照片,需要照片中,且。

2024-03-04 21:42:39 469

原创 【算法随笔:线段树 Segment tree】(多操作 | leetcode例题)

分析线段树,并且一般在算法题中出现。线段树线段树具有,当然动态树也可以,改天更新线段树处理非常强大,很少有别的数据结构能与之媲美线段树进阶操作还有等,这些扩展持续学习中,改日更新DSA模板(静态数组、侵入式)线段树经典应用。

2024-03-04 21:08:37 749 1

原创 【树状数组 | 简单实现】(单点修改 | 区间查询)

【代码】【树状数组 | 简单实现】(单点修改 | 区间查询)

2024-03-03 18:28:21 388 1

原创 【算法随笔 Luogu: P1878 舞蹈课】(优先队列 | 断链重连 | 链式)

typedef struct {//定义一对节点int diff;//每一对的水平差距int first;//第一个人的编号//第二个人的编号} node;//记录每个人是否出队(是否有效)//只有label为假,即还没有出队时访问prev和next才有意义//动态记录每个人的前驱//动态记录每个人的后继int N {};//每个人的水平//一共有多少对//组成的每一对的第一个和第二个人i < N;

2024-03-03 14:24:22 542 1

原创 【算法随笔:leetcode 49 异位字符串分组】(C++ | hash | 字符串算法)

字符串 s1, s2 | -sorting->的思路,异构字符串的定义指出,两个字符串只要包含。可以按任意顺序返回结果列表。给你一个字符串数组,请你将。然后扔进hashset中。最简单的思路,把每个。字符串s1', s2'同种且同数目的小写字母。

2024-02-28 20:13:31 462 1

原创 【简单的trim函数实现 | C++ 17】

【代码】【简单的trim函数实现 | C++ 17】

2024-02-28 20:03:59 326 1

原创 【巩固算法基础:二叉树遍历序列重建】(xx序 + 中序)

就以infix-order和prefix-order举例,尝试还原后序遍历序列吧,其他情况都是类似的。代码分别如下:写的比较规范,可作为模板使用,仅作为参考。

2024-02-28 19:58:26 637 1

原创 【日常实现STL : partial_sort】

然后遍历range:[middle, last),在后面搜索比* first更小的元素,置为更合适的heap-top,然后shift-down(调用adjust_heap, 实质上为shift-down + push_heap), 然后调整range:[first, middle]再次成为max-heap。最终将整个容器中top-k构成的元素集合在range:[first, middle)中构成的max-heap进行排序(调用pop_heap)

2024-02-27 23:26:00 486 1

原创 【算法随笔: 76 最小覆盖子串】(leetcode | hash | 变长滑动窗口 | 预处理优化)

最小覆盖子串 "BANC" 包含来自字符串 t 的。所有字符的子串,则返回空字符串。

2024-02-26 23:53:15 529 1

原创 【回顾算法基础:反转链表】(就地算法 | 穿针引线 | 递归 or 迭代)

stl中的::std::reverse(forwardIt first, forwardIt last, ...), 对list的特化版本的实现思路,就类似上述算法(当然list内部是双向环形链表,同时节点的分配和维护是allocator和forwardit,会复杂很多。给定待反转的链表范围(用下标表示:[first, last),一个左闭右开区间)总的来说,一般遇到的链表反转就两种情况:部分反转和整个反转。思路是让下一个节点指向当前节点。先给出链表节点定义吧。

2024-02-25 19:17:14 608 1

原创 【400行 手搓trie树】(ModernCpp | KMP & AC后缀机 | 模糊匹配 | 词频分析 | 相似度分析 | 串排序 ...)

这里Node是一个嵌套在class trie定义内的struct类型,表示trie树上的节点。

2024-02-24 22:18:43 1224 1

原创 【leetcode 127.单词接龙】(单源无权最短路 | 数学建模 | BFS | 双向BFS | A-Star)

是一个字符串转换序列相邻两个字符串只相差一个字符,并且除了first_word,其他字符串必须出现在指定字符串集合words当中。求最短字符串转换序列示例:5一个最短转换序列是 "hit" -> "hot" -> "dot" -> "dog" -> "cog", 返回它的长度 5。就是一个隐式单源无权最短路问题,朴素的BFS就能解决。(有很多类似的题目,比如基因突变序列,信息输送验证一类的)但是这题的新意在于数学建模(hash、虚拟节点)和算法优化(bidirDFS、A-Star)。

2024-02-20 17:20:42 429 2

原创 【聊聊K路归并】

【代码】【聊聊K路合并】

2024-02-19 22:05:56 416 1

原创 【编译期枚举反射】

【代码】【编译期枚举反射】

2024-02-19 08:32:43 346 1

原创 【链表 快速排序】

链表不适合写快速排序,但是也可以写。

2024-02-19 07:33:32 389 1

原创 【链表 归并排序】(C++ OOP | templateADP | 递归)

代码不长,值得注意的点很多。已经做了测试,可以拷下来在本地跑一下。

2024-02-18 14:52:42 437 1

原创 【就像回字有四种写法,LCA也有六种求法】(最近公共祖先求解)

都加了注释,可以当算法模板使用,注意思考每种方法的适用场景。

2024-02-17 16:42:19 518 2

原创 【中缀表达式求值】(异常处理 | Stack | 支持单目运算 | 支持位运算)

opposite 相反数。操作数和运算符的相对位置有误。~ not 按位取反。

2024-02-17 00:04:30 843 2

原创 【数据通路的时钟周期(程序分析)】( C++ | 拓扑排序 | DP | AOV | DAG最长路 | 数字电路 | 时序分析)

时序发生器根据时钟信号的脉冲,产生微操作时间信号,这些信号用于精确地控制各个部件的动作和数据的传输。时钟信号的变化驱动着时序发生器的工作,使得微操作时间信号按照预定的。D触发器是一种最简单的触发器,在触发边沿到来时,将输入端的值存入其中,并且这个值与当前存储的值无关。: 时钟偏斜(clock skew),又称为时钟偏移,是指时钟信号到达数字电路各部分所用时间差异。时钟信号作为CPU系统中的基准信号,提供了统一的时间参考。之间,D的跳转不会影响触发器存储的值,但是在脉冲边沿到来之前,输入端D必须有足够的。

2024-02-16 15:14:34 523 1

原创 【四叉树】(boolean矩阵划分树 | 多路树 | RAII | 深拷贝)

【代码】【四叉树】(boolean矩阵划分树 | 多路树 | RAII | 深拷贝)

2024-02-16 06:16:25 466 2

原创 【算法随笔 : LeetCode 22. 括号序列生成】( dfs | Stack | 合理剪枝 | 卡特兰数)

首先估计可能结果集的大小,原问题可以划归为(二元的)合法出栈序列问题,所以理论上界为卡特兰数(自行搜索)然后是状态剪纸,通过记录当前状态下的左花括号,和右花括号的数目,来限制下一步的决策空间,达到剪枝效果。代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且。这是一道非常非常经典的潜在剪枝的dfs问题,下面是题解。先看暴力枚举(标准的深搜回溯),然后再进一步优化。这里的dfs有两种策略。

2024-02-15 23:31:42 408 1

原创 【算法随笔:NYOJ-嵌套矩形】(Dp on DAG | DAG 最长路 | 记忆化搜索 | 字典序排序)

矩形X(a,b)可以嵌套在矩形Y(c,d)中,当且仅当 a<c,b<d,或者b<c,a<d。选出尽可能多的矩形排成一行,使得除了最后一个之外,每一个矩形都可以嵌套在下一个矩形内。输出这一排矩形,如果有多个矩形序列满足要求,按照字典序的顺序输出。有n个矩形,每个矩形可以用两个整数a、b描述,表示它的长和宽。这是一个很经典,也很有意思的问题,下面是ac代码。

2024-02-15 20:11:38 330 1

原创 【leetcode 61. 旋转链表】(快慢指针 | 穿针引线 | 数学 )

旋转链表,将链表每个节点向右移动。题目:给你一个链表的头节点。

2024-02-15 01:06:12 351 2

原创 【维护中位数的工具类 MedianHolder】(对顶堆 | templateADT | 批处理)

【代码】【中位数维护的工具类 MedianHolder】(对顶堆 | templateADT | 形参包 初始化列表扩展)

2024-02-15 00:18:51 497 1

原创 【LRU Cache】(Least recently used | template ADT| list + double hash)

【代码】【LRU Cache】(Least recently used | template ADT| list + double hash)

2024-02-14 20:12:24 331 1

原创 【leetcode 212 单词搜索 II】(trie字典树 | 树上dfs | 前缀匹配 | 剪枝)

if(!

2024-02-14 03:23:16 336 1

原创 【LFU Cache】(least frequency usage | ADT | min-heap + double hashtable)

模拟CPU根据主存地址,向高速缓冲的读操作。包含90%的写操作,和10%的读操作。以及DMA或主存向缓冲的写操作。最终计算命中率和读写总次数。

2024-02-14 00:32:07 462 1

原创 【红黑树】(仿STL map | 暂时只写了插入)

【代码】【红黑树】(仿STL map | 暂时只写了插入)

2024-02-13 02:17:13 549 2

原创 【unique_ptr的简易实现】

标准库的源码有一千来行,我就写个80几行的缩水版好了。

2024-02-13 02:09:59 677 1

原创 [FIFO Cache实现】( List + hashtable | template | LRU )

【代码】【LRU Cache实现】( List + hashtable | template | LRU )

2024-02-11 20:34:46 513 1

原创 【箱排序】( 链表实现 )

【代码】【箱排序】( 链表实现 )

2024-02-09 02:12:40 325 1

空空如也

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

TA关注的人

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