04 2025 档案

摘要:堆,可持久化线段树 I.堆 堆是一颗完全二叉树 堆顶一定是堆中所有元素最大或最小的(对于优先级而言) 实现堆 应该不会有人手写堆吧 用STL的优先队列 定义一个优先队列: 首先你需要一个头文件:#include<queue> priority_queue<int> q;//这是一个大根堆q prio 阅读全文
posted @ 2025-04-05 10:36 HEGVDV 阅读(31) 评论(0) 推荐(0)
摘要:单调栈,单调队列,树状数组,线段树 I.单调栈 要了解单调栈,首先,我们得了解栈。 栈是一种数据结构,表现为数据“先进先出”。 而单调栈则是栈中所有数据单调递增或单调递减。 如何维护单调栈 我们以维护一个单调递减的单调栈为例: 假设有以下数据 3 7 4 12 2 对于第一个元素,因为栈中没有元素, 阅读全文
posted @ 2025-04-04 14:41 HEGVDV 阅读(26) 评论(0) 推荐(0)
摘要:字符串处理 I.KMP KMP主要应用于字符串匹配问题 KMP相比普通的单模式串匹配的优势在于:对于每次失配,我们不会从头开始,而是从特定的位置开始匹配。 考虑一组样例 模式串 :abcab 文本串 :abcacababcab 首先,前四位按位匹配成功,遇到第五位不同。而这时,我们选择将abcab向 阅读全文
posted @ 2025-04-02 21:14 HEGVDV 阅读(51) 评论(0) 推荐(0)
摘要:进阶图论 I. 割点与桥 首先,我们得了解割点的含义 割点 对于一个无向图,如果把一个点删除后这个图的极大连通分量数增加了,那么这个点就是这个图的割点(又称割顶)。 通俗点说,就是连接两个或多个连通分量的公共点。 如何求割点呢,这里引用一个算法:Ttarjan 定义 dfn[i] 为 i 点DFS访 阅读全文
posted @ 2025-04-01 20:50 HEGVDV 阅读(57) 评论(0) 推荐(0)