随笔分类 -  学习笔记

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