合集-学习笔记

摘要:前言:我现在才知道我的初一到底有多摆。决定从头开始学 dp。 题单(总) https://www.luogu.com.cn/training/1435 https://www.luogu.com.cn/training/201862 广告 这位博主讲得确实很好,至少让我这个半死的 dp 废物看到了生 阅读全文
posted @ 2024-08-23 11:51 end_switch 阅读(11) 评论(0) 推荐(0) 编辑
摘要:RMQ ST 表 不用讲,浅显易懂,背背板子。 例题 Loj 10121 与众不同 一个需要瞪眼发现单调性的题目。 分析 1.维护 lastval 表示元素 val 上一次出现的位置 2.维护 si 表示以 i 为右端点的完美序列的起点,则: \[s_i = 阅读全文
posted @ 2024-08-23 11:52 end_switch 阅读(6) 评论(0) 推荐(0) 编辑
摘要:树的直径 模板题。 定义 树的任意两点之间的最长简单路径。 求法 dfs 做法 从任意一个节点 dfs 到和其距离最远的节点,可以证明其为树的直径的一端。然后再以直径的一端 dfs 走到和其距离最远的节点即可得出答案。 若要记录直径路径的话只需在第二次 dfs 上记录每个节点的前驱即可。 inlin 阅读全文
posted @ 2024-08-23 11:54 end_switch 阅读(40) 评论(0) 推荐(0) 编辑
摘要:梦回选修 2 QAQ。这东西说实话的确考察思维,而且容易和 dp 什么的综合起来难度就直接飙到 3000,但是组合数学的确是一个极其重要的部分,它可以在很多情况下帮你减少枚举次数(比如去年 T2 的哈希做法如果最后直接组合数学统计答案的话码量少了整整 30 行!),所以这也 阅读全文
posted @ 2024-08-23 11:54 end_switch 阅读(22) 评论(0) 推荐(0) 编辑
摘要:看了很多题目,个人觉得现阶段以考察矩阵乘法(快速幂)、高斯消元法求线性方程组的解、矩阵优化 dp、一些 trick(线段树维护矩阵,kmp 套矩阵等)以及矩阵自身性质的深层次运用为主。 P1962 斐波那契数列 应该是典题。从这道题我们可以发现矩阵优化 dp 的最有效办法是手模,所以此类题目一般考察 阅读全文
posted @ 2024-08-23 11:55 end_switch 阅读(7) 评论(0) 推荐(0) 编辑
摘要:前言 引用一句刘邦的话:“有时 01 Trie 胜于 01 Trie。” 正文 前景提要 Trie(串串咕了 qwq) 位运算 贪心 01 trie 简介 实质上是字符集只有 {0,1} 的 trie。 由于每一个自然数一定可以进行二进制拆分,所以一个数其实 阅读全文
posted @ 2024-08-23 16:33 end_switch 阅读(18) 评论(0) 推荐(0) 编辑
摘要:问题模型 给定 a,b 两个长度为 n 的序列,求下列式子最大值: i=1nai·xii=1nbi·xi其中 \(\forall i \in [1, n], x_i \in \le 阅读全文
posted @ 2024-09-02 22:50 end_switch 阅读(8) 评论(0) 推荐(0) 编辑
摘要:并查集 普通并查集 路径压缩写法: struct Union_Find_Set { int f[N]; inline void init() { for(int i = 1 ; i <= n ; ++ i) f[i] = i; } inline int find(int x) { if(x != f 阅读全文
posted @ 2024-09-04 23:14 end_switch 阅读(8) 评论(0) 推荐(0) 编辑
摘要:动态开点 当正常堆式建树开不下时(nV 过大),通常使用动态开点。 例题 P2781 传教 算是很板了吧? 每次修改的时候,若当前访问节点未建立则新建节点并回溯至上一个节点记录左右儿子。实测写 & 引用或 struct 是很方便的。 要十分注意的是在 work 函数(单点修改 阅读全文
posted @ 2024-09-06 22:32 end_switch 阅读(25) 评论(0) 推荐(0) 编辑
摘要:由于是在树上搞的 ds 所以考察数据结构本身性质偏多,需大力注重细节。 思想 考虑将一颗树的链划分成若干个区间进行维护。 这种划分方式叫做剖分。 约束 一颗有根树(有时要求换根但不是真正换根) 每个点恰好包含在一条剖出的链中(若被多条链同时包含则需要同时维护多条链,修改多余的可能影响复杂度) 剖分出 阅读全文
posted @ 2024-09-09 21:34 end_switch 阅读(9) 评论(0) 推荐(0) 编辑
摘要:入门 例题 [ABC329F] Colored Ball。 题意 给定 N 个盒子,每个盒子里面有一个颜色为 Ci 的小球。有 Q 次操作,每次操作将第 ai 个盒子中的球都放到第 bi 个盒子里面,你需要在每次操作后输出当前操作结束后第 bi 阅读全文
posted @ 2024-10-08 14:08 end_switch 阅读(19) 评论(3) 推荐(0) 编辑
摘要:一个 kmp 学了 n 遍终于学懂的屑菜 bot。 下文默认文本串为 s,模式串为 t。 前缀函数 定义 πi 表示前缀为 i 的子串中的最长公共前后缀(border)长度。 求取 暴力 O(n3) 去暴力枚举。 高效算法 第一个重要的观察 阅读全文
posted @ 2024-10-18 19:33 end_switch 阅读(14) 评论(0) 推荐(0) 编辑
摘要:字符串哈希 形式 prei=prei1×base+siprei=j=1isj×baseij截取子串 \[Hash_{[l, r]} = pre_r - pre_{l - 1} \time 阅读全文
posted @ 2024-10-21 16:50 end_switch 阅读(11) 评论(0) 推荐(0) 编辑
摘要:定义 对于一张无向图 G,若所有点可以分为两个点集 AB,且 AB 的内部没有连边,那么我们称 G 可以划分为一张二分图。 二分图的划分不唯一,也不一定联通,也不一定有环 存在的充要条件 若无向图 G 是二分图,那么 G阅读全文
posted @ 2024-12-01 14:20 end_switch 阅读(8) 评论(0) 推荐(0) 编辑
摘要:简介 基于分裂与合并的 Treap。 基本操作 split 分裂 按权值分裂: inline void split(int p, int k, int &x, int &y) {// p 表示当前分裂树的根节点,x,y 表示分裂成的两棵树的根节点,k 为关键字 if(! p) return x = 阅读全文
posted @ 2025-01-12 20:08 end_switch 阅读(4) 评论(0) 推荐(0) 编辑
摘要:简介 将多棵线段树的信息统一起来的高效算法称之为线段树合并。 通常合并顺序呈树状结构。 例题 P3224 [HNOI2012] 永无乡 假设所有点都在一个连通块里,那么我们只需要维护一个值域线段树并在上面二分即可。 但此时图不连通,我们该如何快速的统计信息呢? 对于连边,并查集可以胜任。 对于信息的 阅读全文
posted @ 2025-01-16 20:11 end_switch 阅读(4) 评论(0) 推荐(0) 编辑
摘要:简介 李超线段树通常维护两个操作: 插入一个一次函数 查询直线 x=k 处的先前插入的函数最值 流程 插入 考虑因为插入的都是直线,所以函数在区间 [L,R] 具有单调性。 李超线段树维护的叫做最优势线段,也就是线段树上区间 [L,R],维护的是取 \(mid = \ 阅读全文
posted @ 2025-01-16 20:55 end_switch 阅读(1) 评论(0) 推荐(0) 编辑
摘要:简介 通过定义势能函数 ϕ(i) 去描绘整个序列的势能从而推导正确的复杂度。 例题 P4145 上帝造题的七分钟 2 / 花神游历各国 典。 设 ϕ(i) 表示第 i 个元素的势能。 一个元素不停的开根一定会变成 1,不妨将元素 x 改写成 \(2 阅读全文
posted @ 2025-01-16 22:29 end_switch 阅读(1) 评论(0) 推荐(0) 编辑
摘要:概念 概率 定义 令 P(A) 为事件 A 可能发生的概率。若事件 An 件事中独立存在,则 P(A)=1n。 性质 设 P(AB) 表示两个互不干扰的独立事件都发生的概率,则: \[P(A \cap B) = 阅读全文
posted @ 2025-02-04 23:34 end_switch 阅读(6) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示