随笔分类 -  算法·理论

摘要:1. 联通分量 分量说明我们探讨的是子图。 OI 中重要的联通分量是这几个: 点双 无向图 边双 无向图 强连通 有向图 2. 点双联通 2.1 点双联通 在一张连通的无向图中,对于两个点 uuu 和 vvv,如果无论删去哪个点(只能删去一个,且不能删 uuu 和 vvv 自己)都不能使它们不连通, 阅读全文
posted @ 2024-07-25 09:09 sLMxf 阅读(80) 评论(0) 推荐(0)
摘要:0. ? 0.1 ? 本文章仅介绍剖分,如果是精神病,请去找@Grow2011 。 0.2 ? 0.3 ? depx=depthxdep_x=depth_xdepx​=depthx​:xxx 节点的深度 faxfa_xfax​:xxx 节点的父亲 topxtop_xtopx​:xxx 重链链顶。 本 阅读全文
posted @ 2024-07-17 08:59 sLMxf 阅读(41) 评论(0) 推荐(0)
摘要:0. 阅读前须知 本文章仅存在于整数范围内。 a∣ba|ba∣b 表示 aaa 是 bbb 的因数。 gcd⁡(a,b)\gcd (a,b)gcd(a,b) 表示求最大公因数。 1. 同余 1.1 同余的定义 对于两个整数 a,ba,ba,b ,如果它们除以 ppp 的余数相同,则称它们模 ppp 阅读全文
posted @ 2024-07-15 13:45 sLMxf 阅读(61) 评论(0) 推荐(0)
摘要:1. 加法原理与乘法原理 分类用加法。 分步用乘法。 2. 排列组合 2.1 排列数 排列数的定义:从 nnn 个物体选出 rrr 个物体(有序)的方案数。 记作 Anr=n×(n−1)×⋯×(n−r+1)A_n^r=n\times (n-1)\times \cdots\times (n-r+1)A 阅读全文
posted @ 2024-07-12 09:10 sLMxf 阅读(132) 评论(0) 推荐(0)
摘要:零、说在前面 0.1 感谢 感谢百度百科、oi-wiki、洛谷的题目。 0.2 阅读前须知 作者很菜,不要看。如果有错误,私信即可,一周内回。 一、抽屉原理 1.1 第一抽屉原理 原理1: 把 n+kn+kn+k 个物体放到 nnn 个抽屉里,则至少有一个抽屉里的东西不少于两件。 证明(反证法):如 阅读全文
posted @ 2024-06-29 14:52 sLMxf 阅读(103) 评论(0) 推荐(0)
摘要:1. 什么是分层图 在某些图论问题中,有额外的维度信息需要维护,并且该维度对图的信息有变动。此时,我们可以将图复制若干份,每一份代表一“层”,不同“层”代表着不同的额外维度,并以此修改层内的图信息以及获得层间的连边信息。 分层图更多的是建图的思想,而不是一个具体的算法,所以具体怎么运用,需要在题目中 阅读全文
posted @ 2024-02-20 11:26 sLMxf 阅读(54) 评论(0) 推荐(0)
摘要:有位哲人是这么说的:爸爸的爸爸是爸爸。——哲人 在并查集中,这句话是成立的。 并查集是维护自己“顶头上司”的一种数据结构,定义为 fatherifather_ifatheri​。(简称 faifa_ifai​) 例如P1151 亲戚中,就需要用到并查集。 初始化 并查集的初始化如下:fai=ifa_ 阅读全文
posted @ 2024-02-14 13:35 sLMxf 阅读(28) 评论(0) 推荐(0)
摘要:一. KMP 1. border 如果一个字符串的前缀等于他的后缀,我们称这个字符串是原字符串的border。 例如,abcakmeabc 中,abc 就是一个border。 2. KMP 定义一个字符串的 nxtnxtnxt 数组表示:前 iii 个字符的最长border长度。 那怎么求一个字符的 阅读全文
posted @ 2024-02-05 15:12 sLMxf 阅读(64) 评论(0) 推荐(0)
摘要:区间DP是啥? 就是一种高级的DP。先看例题: 1. 区间DP例题:合并石子 按照之前的DP,很容易想到定义 fif_ifi​ 表示堆前 iii 个的最优解。但这行得通吗? 可以想到,fi∼jf_{i\sim j}fi∼j​ 是没法维护的(只维护了前缀),故定义 fi,jf_{i,j}fi,j​ 表 阅读全文
posted @ 2024-02-05 13:42 sLMxf 阅读(45) 评论(0) 推荐(0)
摘要:什么是字符串呢?就是一堆字符的东西。很容易想到用 char s[MAXN] 定义。 这里介绍一种新的数据结构:string。 如果要定义一堆字符串呢?用 string s[MAXN] 就可以了。 不过给定另一种定义方式——字典树(Trie) 先来看看字典树是怎么定义的。例如这几个字符串:iak,io 阅读全文
posted @ 2024-02-05 13:29 sLMxf 阅读(35) 评论(0) 推荐(0)
摘要:0. 前置芝士:二叉树的存储。 如果给一棵完全二叉树从左往右、从上往下标号,那么 iii 号节点的父亲编号为 ⌊i2⌋\lfloor \dfrac{i}{2} \rfloor⌊2i​⌋,左儿子编号为 2i2i2i,右儿子编号为 2i+12i+12i+1。 那么我们可以用一个数组 a[i] 来存储一颗 阅读全文
posted @ 2024-02-01 19:50 sLMxf 阅读(40) 评论(0) 推荐(0)
摘要:1. 启动发式搜索:A* 例题:八数码难题 什么是A*呢?举个例子,怎么算从长沙到北京的最短路。 假设有两个点 A,BA,BA,B,我们可以优先选择直线距离短的点,先算到那里的点。 也就是,计算一个估计值。在A*中,我们称作 hhh*(x)(x)(x)。 A*有一个很重要的等式:fff*(x)=g( 阅读全文
posted @ 2024-02-01 11:21 sLMxf 阅读(37) 评论(0) 推荐(0)
摘要:前置知识:求 S+nSS+\dfrac{n}{S}S+Sn​ 的最小值,并求出 SSS。其中 nnn 是定值。 (x−y)2≥0→x2+y2≥2xy→x2+y2+2xy≥4xy→x+y≥2xy(x-y)^2\ge 0\to x^2+y^2\ge 2xy\to x^2+y^2+2xy\ge 4xy\t 阅读全文
posted @ 2024-01-31 10:32 sLMxf 阅读(27) 评论(0) 推荐(0)
摘要:1. lowbit(n)\text{lowbit}(n)lowbit(n) 先介绍一个函数:lowbit(n)\text{lowbit}(n)lowbit(n)。它表示二进制下从右起第一个 111 的位置表示的数。例如:(114514)10=(11011111101010010)2(114514)_ 阅读全文
posted @ 2024-01-30 09:40 sLMxf 阅读(37) 评论(0) 推荐(0)