![](https://img-blog.csdnimg.cn/20190918140129601.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
OI的那些事
文章平均质量分 83
高中信竞的一些资料
日居月诸Rijuyuezhu
原OIer,现高中毕业
展开
-
有上下界网络流 学习笔记
有上下界网络流 学习笔记文章目录有上下界网络流 学习笔记前言例题模型构建无源汇可行流有源汇可行流有源汇最大流有源汇最小流后记前言(阅读本文章前请确保已经了解 最大流 有关内容)众所周知,网络流是一种解决问题的有效手段。它凭借灵活的建模技巧、得天独厚的图论性质、高效的算法成为了OI的一把利器。有上下界网络流 这一技巧也为网络流的解题创造了更开阔的维界。十分感谢 liu_runda 的博客有上下界的网络流学习笔记,让我学会了这个算法。例题主要有三个,代表了有上下界网络流的三种模型:LOJ#115原创 2021-01-16 16:45:19 · 136 阅读 · 0 评论 -
同余方程 学习笔记
同余方程 学习笔记文章目录同余方程 学习笔记线性同余方程(exgcd)线性同余方程组I(CRT)线性同余方程组II(exCRT)离散对数I(BSGS)记录一些我另类的模板。推荐博客:同余方程-5天从入门到入土。其中有同步洛谷题单。线性同余方程(exgcd)P5656 【模板】二元一次不定方程 (exgcd)先上板子:#include<cstdio>#include<cstring>#include<algorithm>#include<queue原创 2021-01-26 16:14:17 · 210 阅读 · 1 评论 -
Manacher 学习笔记
Manacher 学习笔记2021/02/23 看了 N 遍,终于看懂了。。。推荐资料:OI-Wiki。同时这篇博客还借鉴了洛谷春令营网课的资料,不得不说获益匪浅。1 基本概念1.1回文串对于一个字符串 s[1…n]s[1\dots n]s[1…n],它是回文串当且仅当 ∀i∈[1,n],s[i]=s[n−i+1]\forall i\in[1,n],s[i]=s[n-i+1]∀i∈[1,n],s[i]=s[n−i+1]。1.2 回文子串若 ttt 是 sss 的子串且 ttt 是回文的,则称原创 2021-02-23 16:18:29 · 115 阅读 · 0 评论 -
筛法求质数
文章目录例题求质数Q1Q2例题LGOJ P3383 【模板】线性筛素数LGOJ P1865 A % B Problem求质数下面我们来讲解如何求质数Q1我们如何判断一个数kkk是否为质数呢?可以采用试除法bool pr(int k) { if(k == 1) return 0; for(rg int i = 2; i <= n; i++) if(k % i == 0...原创 2019-08-19 09:38:19 · 880 阅读 · 0 评论 -
Min_25 筛学习笔记
Min_25 筛学习笔记文章目录Min_25 筛学习笔记算法思想&步骤PART 1:素数的函数和PART 2 :再加上合数的部分Reference代码Min_25 筛是解决一系列特定的数论函数求前缀和的亚线性方法。最近又用到了Min_25筛,所以把博客从博客园搬了过来,并做了一些修改。时间复杂度为 O(n34logn)\mathcal O(\dfrac{n^{\frac{3}{4}}}{\log n})O(lognn43) 。题目:P5325 【模板】Min_25筛算法思想&原创 2021-02-16 21:21:07 · 131 阅读 · 0 评论 -
FFT&NTT 多项式乘法
FFT&NTT 多项式乘法文章目录FFT&NTT 多项式乘法前言前置知识多项式的表示单位根离散傅里叶变换(DFT)快速傅里叶变换(FFT)离散傅里叶逆变换(IDFT)快速傅里叶逆变换FTT实现优化NTT前言FFT,快速傅里叶变换;NTT,快速数论变换,其实是一个东西在不同的域上的不同表现形式。本博客只是简单地总结一下,提一些其它博客没有注意的地方。推荐学习资料:OI Wiki-FFTOI Wiki-NTT傅里叶变换(FFT)学习笔记——command block (极度推荐)原创 2021-01-28 16:29:47 · 677 阅读 · 0 评论 -
二分图最大权匹配(KM算法) 学习笔记
二分图最大权匹配(KM算法) 学习笔记文章目录二分图最大权匹配(KM算法) 学习笔记学习资料KM算法定义算法流程调整顶标代码(Dfs)学习资料匈牙利与KM算法二分图最大权匹配——OI Wiki题解 P6577【模板】二分图最大权完美匹配KM算法P6577 【模板】二分图最大权完美匹配KM算法用来求一类特殊二分图的最大权完美匹配。这个特殊指:每对 左右部点间都有边左右部的节点数量相同。其实没有关系。我们只要这样做,就可以推至普适情况:原来没有边的左右部点间连权值为 0 / −in原创 2021-01-27 11:48:50 · 999 阅读 · 2 评论 -
【测试】cstring头文件中memset的功能
文章目录前言:测试程序一、赋极大值危险赋值法:0x7f or 127安全赋值法:0x3f or 63二、赋值为零: 0x00三、赋为-1:0xff or -1四、赋极小值危险赋值法:-0x7f or -127安全赋值法:-0x3f or -63前言:测试程序#define USEFASTERREAD 1 #define rg register#define inl inline#def...原创 2019-08-20 20:53:32 · 479 阅读 · 0 评论 -
网络最大流(网络流初步)
文章目录网络流模板算法1:dinic网络流模板例题:LGOJ P3376 【模板】网络最大流算法1:dinic//IO etc.#include<cstring>const int MAXN = 1e4 + 5;const int MAXM = 1e5 + 5;const int INF = 0x7f7f7f7f;int N, M, S, T;struct Edge...原创 2019-11-04 20:50:48 · 112 阅读 · 0 评论 -
均摊分析 学习笔记
均摊分析 学习笔记阅读材料资料1 :http://ljt12138.github.io/2019/08/05/potential_analysis/资料2:陈胤伯ppt 《均摊分析简介》,uoj群里有。均摊分析三种方法:累积分析,会计分析,势能分析。重点讲讲势能分析。在物理学中,对于做功与路径无关的力(保守力)可以定义势能 Φ\PhiΦ,对于势能的变化量,有:ΔΦ=Φ1−Φ0=−W\Delta\Phi=\Phi_1-\Phi_0=-WΔΦ=Φ1−Φ0=−W均摊分析中我们引入 “势能” 的原创 2021-03-24 11:43:06 · 255 阅读 · 0 评论 -
动态树问题,Link Cut Tree 学习笔记
动态树问题,Link Cut Tree 学习笔记文章目录动态树问题,Link Cut Tree 学习笔记前言动态树问题模板题引入LCT应用 & 技巧类型1:维护路径信息类型2:维护连通性前言我的学习资料:FlashHu的博客1FlashHu的博客2oi-wiki——Link Cut Tree这几篇博客都很经典。动态树问题同样是维护树,动态树比树链剖分更加困难。它多了两种操作:Link(连边),Cut(断边)。动态树其实不是一种算法,而是一种思想,我们要维护一个动态的森林。OI中,原创 2021-01-24 21:18:22 · 180 阅读 · 0 评论 -
扩展欧拉定理 学习笔记
扩展欧拉定理 学习笔记文章目录扩展欧拉定理 学习笔记例题题目大意算法代码Reference例题P5091 【模板】扩展欧拉定理题目大意给出 a,m,ba,m,ba,m,b,求 ab mod ma^b\bmod mabmodm.1≤a≤109,1≤b≤1020000000,1≤m≤1081\le a\le 10^9,1\le b\le 10^{20000000},1\le m\le10^81≤a≤109,1≤b≤1020000000,1≤m≤108算法我们之前就知道,在模 mmm 意义下,原创 2020-12-22 20:17:30 · 109 阅读 · 0 评论 -
二分查找 & 二分答案 详解 & 例题
文章目录二分查找基础思想例题二分答案具体过程二分答案例题二分查找基础思想对于一个 (非严格)单调 序列,我们可以采用二分查找的方法在O(log2n)内O(log_2n)内O(log2n)内寻找出某个元素的位置。一般的代码是://对于非升序列Aint l = 1, r = n;while(l <= r) { int m = (l + r) / 2; if(A[m] == k...原创 2019-08-19 08:00:15 · 1198 阅读 · 0 评论 -
线段树合并-学习笔记纲要
线段树合并线段树合并,一般指两棵(亦可延伸为多棵)权值线段树之间进行横向地信息维护,比如将同一权值处的两个信息相加、取max之类的,最后得到了一棵新线段树。为了节约空间,最好采用动态开点线段树。关键代码第一种方式是一种拆东墙补西墙的方法。int merge(int x, int y, int l, int r) { if(!x || !y) return x + y; if(l == r) { e[x].val += e[y].val; return x; } int原创 2020-11-25 10:15:00 · 186 阅读 · 0 评论 -
斯特林数 学习笔记
斯特林数 学习笔记第二类斯特林数(斯特林子集数){nk}\begin{Bmatrix}n \\ k\end{Bmatrix}{nk},表示将 nnn 个两两不同的元素,划分为 kkk 个互不区分的非空集合的方案数。有递推式 {nk}=k⋅{n−1k}+{n−1k−1},{n0}=[n=0]\begin{Bmatrix}n \\ k\end{Bmatrix}=k\cdot \begin{Bmatrix}n-1 \\ k\end{Bmatrix}+\begin{Bmatrix}n-1 \\ k-1\en原创 2021-04-22 10:45:20 · 257 阅读 · 0 评论 -
多项式 学习笔记
多项式 学习笔记原创 2021-01-29 19:02:00 · 379 阅读 · 0 评论 -
快速排序原理
文章目录快速排序模板题目思路简介详细代码时空分析稳定性STL快速排序模板题目LGOJ模板题:P1177 【模板】快速排序既然名字都叫快速排序,辣么我们就用快速排序来做(笑)。思路简介快速排序和归并排序一样,也是基于一种分治法。我们设void Qsort(int l, int r)表示将[l,r][l,r][l,r]区间排好序。每排一次:我们先找到[l.r][l.r][l.r]的中...原创 2019-08-15 07:18:27 · 145 阅读 · 0 评论 -
原根 学习笔记
原根 学习笔记文章目录原根 学习笔记题目链接引入何为阶何为原根原根的性质与求法Theory 1 (原根存在性)Theory 2.1 (最小原根的大小)Theory 2.2 (较简易的原根判定定理)Theory 3原根与阶的其他性质(先咕着)代码Reference前排Warning以下内容全部都是我自己的随便写写,肯定有所枉谬,还请谅解。想看系统的证明和系统的做法,请直接查阅 Reference。题目链接P6091 【模板】原根引入何为阶根据欧拉定理,当 a⊥na\perp na⊥n 时,有原创 2020-12-25 21:19:55 · 296 阅读 · 0 评论 -
学习笔记记录——2021/2/23更新
学习笔记记录——2021/2/23更新我把从进入省选阶段的笔记做了个分类。有些博客年代久远没有维护。数学同余扩展欧拉定理 学习笔记原根 学习笔记同余方程 学习笔记——undone二次剩余 学习笔记组合数学错排问题 & 例题详解——年代久远数论函数杜教筛 学习笔记Min_25 筛学习笔记利用 Powerful Number 求数论函数前缀和线性代数线性基 学习笔记多项式与生成函数FFT&NTT 多项式乘法多项式 学习笔记——undone其它内容BZOJ3原创 2021-02-23 16:59:24 · 139 阅读 · 0 评论 -
置换群 学习笔记
置换群 学习笔记参考博客:https://www.cnblogs.com/maoyiting/p/14171300.html#/cnblog/works/article/14171300详细定义 & 证明可以看上面的博客,这里主要给出两个定理及其应用。Burnside 引理表述:对于一个置换群 GGG,有L=1∣G∣∑g∈GXgL=\dfrac{1}{|G|}\sum_{g\in G}X^gL=∣G∣1g∈G∑Xg其中 LLL 表示 GGG 作用下,等价类(或者说人话,本质不原创 2021-05-24 09:59:19 · 602 阅读 · 0 评论 -
k 短路 学习笔记
k 短路 学习笔记PART 1求 sss 到 ttt 的 kkk 短路。首先,建立出反图中以 ttt 为根的最短路树。则从 sss 到 ttt 的路径可以分解成树边序列 EtE^tEt 和非树边序列 EEE。(许多博客在此的措辞为“集合”,个人觉得不太准确)为了方便描述,下面设 Ei=(ui,vi,wi)E_i=(u_i,v_i,w_i)Ei=(ui,vi,wi)。有这样一个重要性质:若 EEE 确定了,EtE^tEt 即唯一确定了,整条路径就唯一确定了。因为最短路树是一棵树。若设一条非原创 2021-05-25 16:01:32 · 95 阅读 · 0 评论 -
C++输入语句&输出语句
输入语句对于控制台的IO操作,C++标准在#include<iostream>中提供了原创 2019-08-14 19:12:02 · 29400 阅读 · 0 评论 -
C、C++字符串详解
C中的字符串存储方式C中的字符串一般是采用字符数组来存储的。它由实际部分和末尾的标识符组成char s[MAXLEN+1];设s的长度为len,则 s[0]~s[len-1]一共len的长度存的是s的实际部分。但是,实际上s的占位是 s[0]~s[len]。这s[len]存的是什么呢?是一个空字符'\0'。它标记着字符串的结尾。通过这个标记,一些字符串操作的函数才能够方便的实现输出方式...原创 2019-08-14 19:50:50 · 328 阅读 · 0 评论 -
可持久化数据结构专题-学习笔记
可持久化数据结构专题文章目录可持久化数据结构专题何为可持久化实现可持久化的基本方法:path copying具体可持久化的数据结构可持久化线段树例题1: [可持久化数组](https://www.luogu.com.cn/problem/P3919)例题2:[可持久化并查集](https://www.luogu.com.cn/problem/P3402)例题3:[主席树](https://www.luogu.com.cn/problem/P3834)何为可持久化我就不找定义了,按照我的理解来说。我们知原创 2020-11-25 18:34:51 · 130 阅读 · 0 评论 -
高精度模板
压8位。#define rg register#define il inline#define DEBUG printf("[Passing [%s] in line %d.]\n", __func__, __LINE__)#define putline putchar('\n')#define putsp putchar(' ')#define Rep(a, s, t) for(rg...原创 2019-08-14 19:58:09 · 195 阅读 · 0 评论 -
后缀自动机(SAM) 学习笔记
后缀自动机(SAM) 学习笔记很久以前学过SAM,现在又忘了。学习资料后缀自动机感性理解史上最通俗的后缀自动机详解后缀自动机 (SAM)SAM如果我们把一个长度为 nnn 的串 SSS 的所有后缀放入同一个 trie 中,并标记结束位置end,可以得到一个时间、空间均为 O(n2)\mathcal O(n^2)O(n2) 的(假)后缀树。它具有以下几个性质:从根到任意 end 是一个后缀,从根到任意节点是一个子串。本质不同的子串个数就是状态(节点)个数。但是它的时空太大,不满足我们原创 2021-02-08 14:57:07 · 307 阅读 · 0 评论 -
神仙操作——炒鸡树状数组
文章目录数据结构简介题目分析PART 0PART 1PART 2详细代码TIP数据结构简介炒鸡树状数组(名字我取的,以下简称炒组),是一种很神奇,很强大的树状数组。它支持四种功能:单点修改, 单点查询, 区间修改, 区间查询。举个栗子:LGOJ P3372 【模板】线段树 1大家看看这道例题。题目分析PART 0这是一道线段树模板题。但是,我们都知道:线段树码量较大,常数也较大。...原创 2019-09-13 11:32:47 · 153 阅读 · 0 评论 -
Kruskal重构树 学习笔记
Kruskal重构树 学习笔记文章目录Kruskal重构树 学习笔记前言例题1 BZOJ3732 Network例题2 [NOI2018] 归程前言Kruskal重构树是一种比较冷门的算法,但在解决某些问题时相当好用。例题1 BZOJ3732 Network链接在一个 nnn 点 mmm 边的无向连通图中多次询问两点间的最长边最小值(即两点间的瓶颈)。这是一个经典的 Kruskal重构树问题。这个问题其实也可以直接用最小生成树来解决。因为要最小化最长边,选择最小生成树上的边肯定是不劣的。原创 2021-01-15 16:33:54 · 209 阅读 · 0 评论 -
LCA——最近公共祖先
文章目录前言暴力LCA倍增LCA写法1写法2TarjanLCA前言其实我卡在了这个知识点很久了qwq。我一直没有找到倍增LCA的方便的写法(处理边界的方法),搞得我画图、手玩了很久找边界,最后才做出来2333暴力LCA很简单的暴力:先预处理出每个点的深度,再使两个点的深度相等。然后,使两个点一起往它们的父亲跳,直到它们遇到彼此摩擦出爱的火花时间复杂度:O(n)O(n)O(n)倍增LCA...原创 2019-09-14 17:00:46 · 493 阅读 · 0 评论 -
知识点 归并排序与逆序对
文章目录归并排序大致思想详细代码时空分析稳定性逆序对定义枚举法归并排序法详细代码归并排序大致思想一种分治法:定义void Msort(int l, int r)表示将区间[l,r][l,r][l,r]排序的过程1)若l==rl == rl==r,则区间只有一个元素,排他干啥23332)若l<rl< rl<r,则区间里有超过一个元素。我们设m=(l+r)...原创 2019-08-14 22:17:52 · 211 阅读 · 0 评论 -
利用 Powerful Number 求数论函数前缀和
利用 Powerful Number 求数论函数前缀和0. 前言Powerful Number 可以用来快速求解数论函数的前缀和。本文参考了:zzq’s blog攀岩高手 的博客在此向以上文章的作者呈上真挚的感谢!1. Powerful Number1.1 定义正整数 n=p1a1p2a2⋯psasn=p_1^{a_1}p_2^{a_2}\cdots p_s^{a_s}n=p1a1p2a2⋯psas 满足 ai≥2(1≤i≤s)a_i\ge 2(1\le i\le s)ai≥原创 2021-02-21 20:20:25 · 250 阅读 · 0 评论 -
信息学奥赛(OI)知识点
记录了一些OI常考的知识点原创 2019-08-14 16:59:15 · 1651 阅读 · 0 评论 -
线段树标记永久化——可持久化前提
文章目录题目链接解题思路具体实现详细代码题目链接以这道例题为例:P3372 【模板】线段树 1解题思路我们当然用线段树来做这题。不同于我们以前写的标记下传pushdown(),我们可以使用一种标记永久化的方法。这种算法的核心是:一个点的标记只增不减拒绝使用pushup维护信息这样的操作,在树套树、主席树中很有用武之地。具体实现我们如何完成这样的神奇操作?关于一个点的标记只...原创 2019-09-13 18:37:58 · 1206 阅读 · 0 评论 -
后缀数组 学习笔记
后缀数组 学习笔记果然我学过的东西都忘了。。。文章目录后缀数组 学习笔记ReferencePART 1 后缀数组初见Reference以下博客写得相当好!浅谈后缀数组算法——blackfrog 的博客后缀数组详解——自为风月马前卒后缀数组 (SA)——OI WikiPART 1 后缀数组初见主要介绍倍增法。算法思想请查阅以上三篇博客。本篇文章重在算法实现。P3809 【模板】后缀排序#include<cstdio>#include<cstring>#incl原创 2021-01-21 20:28:10 · 153 阅读 · 0 评论 -
点分治 学习笔记
点分治 学习笔记2021/2/18: 终于重拾点分治。点分治概述点分治采用层层分治的方法,以点为分治中心,能较好地完成无根树上的链(或者说点对)的统计任务。但由于点分治的特性(它重构了树),它无法相当有效地完成与有根树的祖孙结构(比如子树)有关的统计任务。树的重心定义有两个相互等价的定义:定义1: 若树上存在一点,使得该点删去后形成若干个连通块,每个连通块的点数都 ≤⌊n2⌋\le \left \lfloor \dfrac n 2\right \rfloor≤⌊2n⌋ ,则该点称为树的重心。原创 2021-02-19 09:01:21 · 179 阅读 · 0 评论 -
线性基 学习笔记
线性基 学习笔记学习资料线性基详解_a_forever_dream的博客-CSDN博客线性基 - OI Wiki (oi-wiki.org)线性基线性基(简称基)是线性空间(可以看作 nnn 维向量组成的集合)的一组基底。何为基底?假如我们的线性空间 Ω={a1,a2,⋯ ,am}\Omega=\{\mathbf a_1,\mathbf a_2,\cdots,\mathbf a_m\}Ω={a1,a2,⋯,am},我们有一个基为 {b1,b2,⋯ ,bk}\{\mathbf b_1,\ma原创 2021-02-10 11:53:06 · 129 阅读 · 0 评论 -
摩尔投票法 学习笔记
摩尔投票法 学习笔记参考资料:https://www.zhihu.com/question/49973163求序列的绝对众数绝对众数:在序列出现次数 >⌊n2⌋> \left\lfloor\dfrac n 2\right\rfloor>⌊2n⌋ 的数。采用两两抵消的思想。因为其它所有数出现加起来都不如绝对众数多,所以两两抵消后,只有最后剩下的可能是区间众数。时间复杂度 O(n)O(n)O(n),空间复杂度 O(1)O(1)O(1)。拓展https://vjudge.net/p原创 2021-03-22 20:50:51 · 85 阅读 · 0 评论 -
二次剩余 学习笔记
二次剩余 学习笔记学习资料OI-wiki, rqy’s blog。约定以下 ppp 均代指 奇素数,Fp\mathbb F_pFp 指 mod p\bmod pmodp 的域。二次剩余定义若 ∃y∈Fp∧y≢0(modp)\exist y\in \mathbb F_p\wedge y\not\equiv 0\pmod p∃y∈Fp∧y≡0(modp) 使得 x≡y2(modp)x\equiv y^2\pmod px≡y2(modp),则 xxx 是 mod p\bmod pmod原创 2021-02-12 22:12:16 · 199 阅读 · 0 评论 -
杜教筛 学习笔记
杜教筛 学习笔记文章目录杜教筛 学习笔记前置知识:数论函数Reference杜教筛例题P4213 【模板】杜教筛(Sum)前置知识:数论函数(这前置知识分量真大)给几篇博客:OI Wiki-莫比乌斯反演铃悬的数学小讲堂——狄利克雷卷积与莫比乌斯反演Reference我的学习博客来自铃悬的数学小讲堂——杜教筛杜教筛我们先理解杜教筛可以干啥。它可以在亚于线性的时间内求出某个数论函数的前缀和。本质上是利用了狄利克雷卷积的运算性质。下面我们来推柿子。假若我们要求的是 S(n)=∑i=1原创 2021-01-26 09:36:46 · 115 阅读 · 0 评论 -
C++快读快写详解
基本快读快写struct IO{ IO(int set = 0) {if(set) rs;} void RS() {rs;} template<typename T> inline IO r(T& x)const { x = 0; T f = 1; char ch = getchar(); for(; ch < '0' || ch &g...原创 2019-08-14 09:11:52 · 8776 阅读 · 0 评论