随笔分类 -  学习笔记

摘要:https://www.luogu.com/article/ey6cxlv5 考虑将原序列分块,块长为 B=O(logn),那么对这些整块做 ST 表的复杂度就是 O(nBlognB) 的,而这个东西小于 O(n)。 而对于散块,预处 阅读全文
posted @ 2025-01-28 17:03 dcytrl 阅读(5) 评论(0) 推荐(0) 编辑
摘要:矩阵树定理这玩意背一次忘一次,还是写一发吧。 前置知识:行列式求值 给定一个矩阵,定义一个 n 阶矩阵 A 的行列式为 detA=p(1)π(p)ai,pi,其中 p 为一个 [1,n] 的排列,\(\pi 阅读全文
posted @ 2025-01-19 15:19 dcytrl 阅读(7) 评论(0) 推荐(0) 编辑
摘要:引入 有一个排列,你可以通过“比较并交换”这个操作将该排列排好序,即,每次选择一对数 (i,j),若 ai>aj 则交换,否则不交换。 但是,你可以把多对 (i,j) 放在一次操作里并行“比较并交换”,此时操作数记 1,与数对的对数无关,但是每个 i 只能出现至多 阅读全文
posted @ 2024-11-15 15:30 dcytrl 阅读(158) 评论(0) 推荐(0) 编辑
摘要:众所周知,双指针适用于一类固定左端点,右端点具有单调性的问题,由于每个点只会被删一次,所以令加入/删除的时间复杂度为 O(B),总时间复杂度 O(nB)。 而对于一些信息,加入是简单的,但是删除是困难的(例如 gcd、min)等,这时我们考虑 baka's trick 把删除扔掉。 阅读全文
posted @ 2024-11-13 15:30 dcytrl 阅读(63) 评论(0) 推荐(0) 编辑
摘要:为我们熟知的 O(nlogn)O(1) 的 LCA 是欧拉序,由于它的长度较大,所以它的常数也相应的变大。 那怎么用 DFS 序求 LCA 呢? 给出结论:令 dfnx<dfnyx,y 的 LCA 为 DFS 序上 [dfnx+1,dfny] 区间内深 阅读全文
posted @ 2024-10-14 18:23 dcytrl 阅读(29) 评论(0) 推荐(0) 编辑
摘要:适用于 O(1) LCA 的欧拉序 构造方法:dfs 初次访问节点的时候的时候加入欧拉序,从某个子树访问完之后再次将该节点加入欧拉序。 大小:初次会额外访问一次根节点,并且每条边都会给两个端点贡献一次,故为 2n1。 性质:两个节点的 LCA 在欧拉序上处于两个节点之间(虽然一个点 阅读全文
posted @ 2024-10-14 17:47 dcytrl 阅读(65) 评论(0) 推荐(0) 编辑
摘要:之前做了一道高维前缀和题做着做着忘掉怎么写了,遂记一发。 你说的对,但是我谈的真的很浅。 铺垫 回忆一下我们求前缀和是怎么求的。 一维前缀和: for(int i=1;i<=n;i++){ s[i]=s[i-1]+a[i]; } 没有任何问题对吧。 而求二维前缀和时,我们通常会使用如下方法求前缀和( 阅读全文
posted @ 2024-09-10 15:36 dcytrl 阅读(13) 评论(0) 推荐(0) 编辑
摘要:问题引入 给定 n 个数 ai,求出该数列的绝对众数,保证该绝对众数存在。 n107,空间限制 1MB。 算法介绍 摩尔投票法可以 O(1) 空间 O(n) 时间内求出一个数列的绝对众数,使用前提是数列保证存在绝对众数,否则你只能求出一个可能是绝对 阅读全文
posted @ 2024-08-30 12:14 dcytrl 阅读(35) 评论(0) 推荐(1) 编辑
摘要:Johnson 全源最短路算法 引入:多源最短路问题,设点数为 n 边数为 m。 我们有如下方案: floyd,时间复杂度 O(n3),适合任意图。 Bellman-ford(SPFA),时间复杂度 O(n2m),适合任意图。 Dijkstra,时间复杂度 \(O 阅读全文
posted @ 2024-07-23 16:20 dcytrl 阅读(116) 评论(0) 推荐(0) 编辑

more_horiz
keyboard_arrow_up light_mode palette
选择主题
点击右上角即可分享
微信分享提示