随笔分类 - 学习笔记
摘要:网络最大流 前言 网络流是一种神奇的问题,在不同的题中你会发现各种各样的神仙操作。 而且从理论上讲,网络流可以处理所有二分图问题。 二分图和网络流的难度都在于问题建模,一般不会特意去卡算法效率,所以只需要背一两个简单算法的模板就能应付大部分题目了。 单纯只是为了A掉P3376 【模板】网络最大流,并
阅读全文
摘要:线段树优化建图 起因 一般情况下,连边发生在两个点之间。 但在某些题目中,要在点和区间之间连边。 所以有了线段树优化建图。 原理 从模板题看起。 显然,直接暴力连边的最坏时间复杂度和空间复杂度都为 。 线段树建图的原理就是建出线段树,区间连边转化为向线段树上的节点连边。 但只是如
阅读全文
摘要:光速幂 黑科技…… 使用情况 快速求 的值。 在幂运算的底数和取余的模数已经确定的情况下可以使用光速幂。 比如 P3747 [六省联考 2017] 相逢是问候 中需要用光速幂,否则很难卡过。 原
阅读全文
摘要:拓展欧拉定理 内容 对于 ,有 \(a^b \equiv \begin{cases}a^b&b< \varphi(m) \\a^{\left( b \bmod \varphi(m) \right)+\varphi(m)}&b>\varphi(m)\end{c
阅读全文
摘要:欧几里得与拓展欧几里得 欧几里得算法 欧几里得算法是一种快速求出最大公约数的算法。 内容 对于任意的两个整数 ,其最大公约数 。 证明 对于 的情况 ,显然成立。 因此只考虑 的情况。设
阅读全文
摘要:乘法逆元和求法 基本的数论知识,有必要补一发。 开始之前 模运算:取余运算,比如 就是 除以 得到的余数。 性质:在加、减、乘、乘方的运算过程中,进行取余运算,不会对结果产生影响。 优先级:取余运算的优先级和乘法、除法的优先级相同,高于加减法的优先
阅读全文
摘要:可持久化并查集 模板 Luogu P3402 可持久化并查集' 可持久化并查集支持三个操作: 回到某个历史版本(可持久化)。 合并两个集合(并查集)。 查询两个元素是否在同一个集合中(并查集)。 思路 很明显,对于第一个操作,就用主席树实现,也就是把当前版本的根节点设成要求版本的根节点就行了。 至于
阅读全文
摘要:主席树 主席树是由一位巨佬 hjt 发明的,所以叫主席树。 什么是主席树 主席树,又名可持久化权值线段树。所以,主席树 可持久化线段树 至于可持久化的定义,简单来说就是可以访问到之前某个时刻的数据。 比如中的要求:求单点历史值,修改某历史版
阅读全文
摘要:权值线段树 就是以下标为值域的一棵线段树。 定义 引用一下这篇日报中的例子: 假设用权值线段树维护一个数组: 初始权值线段树时所有节点为 0 插入数组中的 1 后 插入数组中的 2 后 全部插入后 时间复杂度 因为
阅读全文
摘要:一个巨大的坑 trie 树 用于查找字符的数据结构。 典型的空间换时间。 定义 又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大
阅读全文
摘要:计算几何全家桶(基础) 其实只是记录一些可能会用到的非常基础的东西(懒得多次反复写了)。 一:【准备工作】 #include <bits/stdc++.h> #define dd double using namespace std; const int N=1e5;const dd eps=1e-
阅读全文
摘要:欧拉函数、定理学习笔记 欧拉函数 定义 所有小于等于 的数中与 互质的数的个数。 符号: 通项公式 表示 的质因数, 表示 的质因数个数。 $$\varphi(x) = x \prod_{i=1}^n \left( 1-\d
阅读全文
摘要:#manacher算法求最长回文串 ##模板题: P3805 【模板】manacher 算法 给定一个仅有小写字母的字符串 ,求 中最长回文串,字符串长为 。 ###分析: 最暴力的方法是直接枚举所有可能的 ,对于每一对 暴
阅读全文
摘要:#GSS系列中的线段树题目笔记 ##前言: GSS系列也是线段树的一部分好题了。 其中GSS6和GSS8貌似是平衡树,所以将来单独另写笔记。 GSS7是树链剖分,也不在这篇博客中提及。 GSS系列题 这篇博客有多处借鉴网上资料,如侵删。 ##GSS1 GSS1 ###题意: 给一段序列(不一定是正整
阅读全文
摘要:#tarjan求LCA ##前言 tarjan求LCA的时间复杂度是,是非常优秀的复杂度,但缺点就是只能离线。(懂了,去学欧拉序求LCA) tarjan求LCA需要用到并查集,本人用的代码: int f[N]; void cz(int x){return x==f[x
阅读全文
摘要:#启发式合并 upd:学了线段树合并之后回来,决定将两篇分开 ##关于启发式合并: 首先对于启发式算法的定义: 启发式算法是基于人类的经验和直观感觉,对一些算法的优化。 比如启发式搜索算法。 至于启发式合并是什么,请先考虑一个问题:将个元素个数为的线性数据结构合并,求时间复杂度
阅读全文
摘要:#背包问题 前言:背包问题的学习笔记和模板例题整理。 ##01背包 有件物品和一个容量为的背包。第件物品的费用是,价值是。求解将哪些物品装入背包可使价值总和最大。 ###分析: 每种物品都只有一件。 都只有放或是不放两种选择。 用表示只放入前$
阅读全文