摘要: 先推荐几篇比较好的博客吧。 OI-wiki Jue-Fan 的博客 辨析 决策单调性优化适用于满足决策单调性的问题。 斜率优化的适用范围还没学习不清楚。 一般来说斜率优化能做的题目决策单调性优化也能做,但是也有例外,由于过于高深我不知道。除此之外,斜率优化是 \(\mathcal{O}(n)\) 的 阅读全文
posted @ 2025-02-20 22:51 Luke_li 阅读(6) 评论(0) 推荐(0)
摘要: 普通生成函数与多项式 Ordinary Generating Function and Polynomial 本段中所谓生成函数皆指普通生成函数。 本文中仍有诸多不详尽之处,未提及的内容可参考雪猫学长的博客。 简介 Introduction 生成函数是对于数列而言的。 一个数列 \(\{a_i\}\ 阅读全文
posted @ 2025-02-20 22:50 Luke_li 阅读(26) 评论(0) 推荐(0)
摘要: 参考文献 https://zhuanlan.zhihu.com/p/604377422 (很好) https://www.luogu.com.cn/article/j0zigjbf https://blog.csdn.net/DT_Kang/article/details/79944113 单位根 阅读全文
posted @ 2025-02-20 22:50 Luke_li 阅读(3) 评论(0) 推荐(0)
摘要: 由于刚学没几天,所以没什么例题。 简介 根号分治是一种用于优化暴力的技巧。 如果对于一个问题,有两种暴力:它们的一部分是复杂度瓶颈,一部分不是,而两者的瓶颈恰好是两个极端。那我们考虑根据某个值的根号分类讨论,结合两种算法,把 \(n\) 的复杂度转化为 \(\sqrt{n}\)。 可以说,根号分治就 阅读全文
posted @ 2025-02-20 22:49 Luke_li 阅读(58) 评论(0) 推荐(1)
摘要: 基数排序 基数排序适用于多关键字字典序排序的时候(或者也可以把一个数拆位,把每一位当成关键字)。它可以做到几乎 \(O(n)\) 的时空复杂度。 步骤 假如我们要对各有 \(k\) 个关键字的 \(a\) 个数字进行排序,我们就从最次要的关键字开始枚举,对该关键字采取稳定的排序。稳定的排序是,具体而 阅读全文
posted @ 2025-02-20 22:48 Luke_li 阅读(16) 评论(0) 推荐(0)
摘要: 概念辨析 点双连通分量(v-DCC)内部没有割点。(割点:删去该点之后子图不连通) 边双连通分量(e-DCC)内部没有割边。(割边:删去该边之后子图不连通) e-DCC不一定是v-DCC(反例容易举出)。 v-DCC不一定是e-DCC(如一条孤立边)。 点双连通分量(v-DCC) 定义 点双连通分量 阅读全文
posted @ 2025-02-20 22:40 Luke_li 阅读(18) 评论(0) 推荐(0)
摘要: 欧拉通路:经过每个点恰好一次的路径 欧拉回路:出发和结束在同一点的欧拉通路 注意以下性质:无向图中,所有点度数之和是偶数;有向图中,所有点入度之和等于出度之和。 欧拉回路一般有两种题型:打印方案和判断可行性 看到“每条边都必须经过”这类条件,应第一时间想欧拉回路。 模板 我只会 Hierholzer 阅读全文
posted @ 2025-02-20 22:40 Luke_li 阅读(34) 评论(0) 推荐(0)
摘要: 简述 相当类似 CDQ 的一种算法。说的冠冕一点,是对于每个 mid 批量处理查询的算法。 更加简单的说法就是:二分答案,对于每个 \(mid\),用二维数点之类的方法判断每个查询的答案是大于 \(mid\) 还是小于 \(mid\),据此将查询分为两类继续递归下去。(一般来说会把修改也放进来,使用 阅读全文
posted @ 2025-02-20 22:39 Luke_li 阅读(12) 评论(0) 推荐(0)
摘要: 网络流 网络流的问题套路性较强,需要多刷题。 模板 Dinic 算法求最大流 点击查看代码 ll n,m,s,t; struct edge { ll v,w,nxt; }e[M*2]; ll head[N],tot=1; void insert(ll u,ll v,ll w) { tot++; e[ 阅读全文
posted @ 2025-02-20 22:38 Luke_li 阅读(21) 评论(0) 推荐(0)
摘要: Manacher 算法 简介 Manacher 是一种写法非常简单的用于快速查找字符串中回文串的算法。其时间复杂度为 \(O(n)\),空间复杂度为 \(O(n)\),二者均有 \(2\) 倍常数。 使用 Manacher 算法可得到以每个位置(和分割线)为中心的最长回文串。 步骤 见 OI-wik 阅读全文
posted @ 2025-02-20 21:23 Luke_li 阅读(21) 评论(0) 推荐(0)
摘要: 简介 字典树,又称Trie,是一种把字符串放在树上的数据结构。 可以用来: 做AC自动机的基础 \(O(\min(len_s,len_t))\) 查找一些字符串有多少是另一个字符串的前缀。 处理异或相关问题 做法: 每个点由若干个子节点,对应着下一个字母。 每次从根结点出发,根据当前字母是什么,走向 阅读全文
posted @ 2025-02-20 21:22 Luke_li 阅读(21) 评论(0) 推荐(0)
摘要: 分治 题目:模拟赛题 不知道怎么想到分治的。总之不断分治,每次讨论中间跨过界限的3个点(因为一次不可能跨过超过3个点,所以一定经过了3个点中的1个)。剩下的不会。 博弈论 二分图博弈 比如这道题。可以直接分析后 \(O(1)\) 做完。 一般来说:轮流取/移动某个东西,可能和二分图博弈有关。详情见这 阅读全文
posted @ 2025-02-20 21:22 Luke_li 阅读(4) 评论(0) 推荐(0)
摘要: 杂项 特殊权值图中,最短路在MST上 如果权值满足“若 \(a<c且b<c\),那么 \(a+b<c\) ”(如 \(\{2^i\}\))那么多点之间最短路的并在这些点的MST上,贪心建MST即可。 证明:prim 和 dijkstra 的区别就在于上面两个式子。因此只要有左推右的条件,就有这一性质 阅读全文
posted @ 2025-02-20 21:21 Luke_li 阅读(6) 评论(0) 推荐(0)
摘要: 从复杂度入手 以下展示了一些经典的算法的复杂度。当然还有很多遗漏的,接下来慢慢补。 数据规模(以1000ms时限为例) 典型的对应算法 复杂度 \(1\le n\le 10\) 全排列 \(O(n!)\) \(1\le n\le C\times 20\) 搜索;状态压缩 \(O(2^n)\)(注意常 阅读全文
posted @ 2025-02-20 21:20 Luke_li 阅读(6) 评论(0) 推荐(0)
摘要: 思路 如果贪心无法证明,考虑dp 这是一个正确率不高的想法。 尝试dfs 如果能够构造出一种dfs的过程,那么可以仿照dfs的参数构造出dp的状态。或者可以直接记忆化搜索。 优化转移点 如果有些转移点没有什么决策(比如可以用组合数或者贪心代替),那么就可以想方设法把这些转移点去掉。例如:P6820 阅读全文
posted @ 2025-02-20 21:13 Luke_li 阅读(2) 评论(0) 推荐(0)
摘要: 杂项(暂未归类) 树状数组优化贪心:邻项交换得到单峰序列的最小交换次数 有一个排列,你每次可以交换相邻两项,问你最少要交换几次才能得到单峰序列(峰的左边单调递增,峰的右边单调递减)。 注意到:最小的数一定在最左边/最右边。分配完最小的数字后,次小的数字也一定在最左边/最右边。 因此我们有一种贪心:每 阅读全文
posted @ 2025-02-20 21:10 Luke_li 阅读(7) 评论(0) 推荐(0)
摘要: 尚未分类 二进制分组 把图/问题按二进制分为几组,分开来跑一些算法。目前没发现太多的应用。一般用于:一个点既可能是起点又可能是终点,或者既可能有某种性质也可能没有这种性质。 这个方法被运用于很多精妙的算法:如 hamming校验码。 一个用途 例题:有个图,图中有些特殊点,求特殊点互相距离的最小值( 阅读全文
posted @ 2025-02-20 21:10 Luke_li 阅读(3) 评论(0) 推荐(0)
摘要: 综合性 tricks 时间倒流 如果只有删除操作但是不好删除,考虑让时间倒流,从最后的状态不断加入。其余同理。 适用于很多想法,如平衡树维护凸包,区间染色,图论删除/加入点等等。 插入标记回收 解决的问题是:\(q\) 次询问 \(x\) 依次经过 \(r−l+1\) 种操作的结果。 第 \(i\) 阅读全文
posted @ 2025-02-20 21:09 Luke_li 阅读(5) 评论(0) 推荐(0)
摘要: 偶然看到一种推导欧拉公式的方法: 定义 \(f(x)=\frac{\cos x+i\sin x}{e^{ix}}\) 我们发现 \(f(0)=1\) 我们还有 \(f'(x)=\frac{i\cos x-\sin x}{e^{ix}}-\frac{i\cos x+i^2\sin x}{e^{ix}} 阅读全文
posted @ 2025-02-20 21:08 Luke_li 阅读(51) 评论(0) 推荐(0)
摘要: 在了解皮亚诺公理体系后,我突然幻想,尝试构建一个类似的公理体系(在不看标答的情况下)。由于是瞎试,所以肯定有非常多不严谨的地方,权当娱乐罢了。 定义 文字叙述的部分 定义一个表达式由算符和数组成。 算符有以下几个性质: 返回值:可以是表达式(布尔)或者数 输入值:可以是若干个,类型可以是表达式或数 阅读全文
posted @ 2025-02-20 21:04 Luke_li 阅读(31) 评论(0) 推荐(0)