文章分类 -  算法学习笔记

摘要:比赛链接 比赛链接 A MMC取石子 无论如何,每个人一次只能拿奇数颗,也就是说:如果有偶数颗石子,拿一次会变成奇数颗;如果有奇数颗石子,拿一次会变成偶数颗。最后问,谁将石子变为偶数颗(0颗)获胜,所以只需要判断 $ n $ 的奇偶性: 如果 $ n $ 是奇数,无论如何, $ MMC $ 操作后都 阅读全文
posted @ 2026-04-05 06:01 Alkaid16 阅读(120) 评论(0) 推荐(0)
摘要:定义 欧拉路径:图中的某条路径,将某条边恰好经过一次(可以重复经过点)。 欧拉回路:图中的某条路径,将某条边恰好经过一次的同时,满足起点和终点是同一点。 存在欧拉路径的图称为半欧拉图,存在欧拉回路的图成为欧拉图。 判断 有向图 半欧拉图:图中恰好存在 $ 1 $ 个点出度比入度多 $ 1 $ (起点 阅读全文
posted @ 2026-02-24 22:36 Alkaid16 阅读(14) 评论(0) 推荐(0)
摘要:内容 \[\binom{n}{m} \equiv \binom{\left\lfloor \frac{n}{p} \right\rfloor}{\left\lfloor \frac{m}{p} \right\rfloor} \binom{n \bmod p}{m \bmod p} \pmod{p} 阅读全文
posted @ 2026-02-12 21:10 Alkaid16 阅读(18) 评论(0) 推荐(0)
摘要:基础操作 声明:bitset<100005>b; 单点置 $ 1 $ :b[i] = 1;或b.set(i); 单点置 $ 0 $ :b[i] = 0;或b.reset(i); 单点取反:b.flip(i); 整体置位:b.set();或b.reset(); 整体取反:b.flip(); 计数:b. 阅读全文
posted @ 2026-02-11 12:56 Alkaid16 阅读(6) 评论(0) 推荐(0)
摘要:题目 洛谷链接 AtCoder链接 题目描述 定义长度为 \(n\) 的数列 \(a\) 的美丽值为 \(a_1\ \oplus\ a_2\ \oplus\ \cdots\ \oplus\ a_{n}\),其中 \(\oplus\) 表示按位异或运算。 给定一个长度为 \(N\) 的数列 \(A\) 阅读全文
posted @ 2026-02-07 12:35 Alkaid16 阅读(5) 评论(0) 推荐(0)
摘要:题目 洛谷题目链接 AtCoder题目链接 题目描述 有 \(N\) 张卡片,编号为 \(1, 2, \ldots, N\)。第 \(i\) 张卡片(\(1 \leq i \leq N\))的一面用红色写着整数 \(A_i\),另一面用蓝色写着整数 \(B_i\)。最开始,这些卡片按照编号顺序从左到 阅读全文
posted @ 2026-02-06 00:17 Alkaid16 阅读(7) 评论(0) 推荐(0)
摘要:题目 题目链接 P2365 任务安排 题目描述 \(n\) 个任务排成一个序列在一台机器上等待完成(顺序不得改变),这 \(n\) 个任务被分成若干批,每批包含相邻的若干任务。 从零时刻开始,这些任务被分批加工,第 \(i\) 个任务单独完成所需的时间为 \(t_i\)。在每批任务开始前,机器需要启 阅读全文
posted @ 2026-02-04 15:41 Alkaid16 阅读(9) 评论(0) 推荐(0)
摘要:题目 题目链接 题目描述 小 A 的工作不仅繁琐,更有苛刻的规定,要求小 A 每天早上在 \(6:00\) 之前到达公司,否则这个月工资清零。可是小 A 偏偏又有赖床的坏毛病。于是为了保住自己的工资,小 A 买了一个空间跑路器,每秒钟可以跑 \(2^k\) 千米(\(k\) 是任意自然数)。当然,这 阅读全文
posted @ 2026-02-02 22:30 Alkaid16 阅读(5) 评论(0) 推荐(0)
摘要:定义 在 $ n $ 维的布尔集空间上,找到一组 $ n $ 维的基,其进行任意的异或操作可以拼出该布尔集空间的所有二进制数。 算法 算法的主要思想是高斯消元法,从高位开始,如果此位为 $ 1 $ 则尝试计入基,如果该位置已经有数字,则矩阵行变换消除首个 $ 1 $ ,这里的行变换采取的是异或的方式 阅读全文
posted @ 2026-01-28 12:20 Alkaid16 阅读(7) 评论(0) 推荐(0)
摘要:舞蹈链算法 舞蹈链(Dancing Links X,DLX)算法,用于解决精准覆盖问题。 模板题链接 本质思想还是深搜,但是为了加速,采用双向十字循环链表的数据结构维护待选的集合。时间复杂度为 $ O(p^{cnt}) $ ,其中 $ p $ 为接近 $ 1 $ 的常数, $ cnt $ 为涉及的 阅读全文
posted @ 2025-12-16 17:27 Alkaid16 阅读(48) 评论(0) 推荐(0)
摘要:扫描线算法简介 没有固定的模板。扫描线是一种思想,对于某些复杂的几何问题,可以想象一根虚构的线在图上扫描。 可用于解决:多个矩形求面积并、多个矩形求周长并等。 例题 扫描线模板题 题意:给定 $ n $ 个矩形,求矩形并后得到图形的面积。 将矩形看作两条竖线和两条横线。想象一根竖直的线,从最左扫描到 阅读全文
posted @ 2025-12-14 01:21 Alkaid16 阅读(26) 评论(0) 推荐(0)
摘要:题目链接 题目链接 题目大意 给定 $ h \times w $的矩阵,其中 $ k $ 个位置已经被填字母,剩余位置仍待填。字母可以填 $ D, R, X $,分别代表位于该格子只能向下走、只能向右走、两个方向都可以走。求在剩余所有 $ 3 ^ {h w - k} $ 种填字母方案中,从 $ (1 阅读全文
posted @ 2025-10-22 23:39 Alkaid16 阅读(15) 评论(0) 推荐(0)
摘要:题目 题目链接 Atcoder题目链接 中文题面 洛谷题目链接 思路 先考虑一个更简单的问题:在圆上有 $ n $ 个等距离的点,编号从 $ 1 $ 到 $ n $ 。给定 $ A_1, B_1, A_2, B_2 $ ,已知四个数字为互不相等的 $ 1 \sim n $ 的整数,怎么判断 $ (A 阅读全文
posted @ 2025-09-27 00:18 Alkaid16 阅读(37) 评论(0) 推荐(0)
摘要:组合数常用公式 递推公式:$ \binom{n}{k} = \binom{n-1}{k-1} + \binom{n-1}{k} $ 全组合求和:$ \sum_{k=0}^{n} \binom{n}{k} = 2^n $ 全组合交错求和:$ \sum_{k=0}^{n} (-1)^k \binom{n 阅读全文
posted @ 2025-09-15 21:01 Alkaid16 阅读(82) 评论(0) 推荐(0)
摘要:前言 需要先了解: 树的初步认识(如果你知道树是什么,可以忽略~) 线段树(如果你会写线段树,也可以忽略(如果你不屑于学线段树,也可以忽略~)) 定义 树链剖分:将一棵树化简成一条线段,用维护线段的数据结构(常见的有树状数组、ST表、线段树等)去维护这棵树。 树链剖分,最常见重链剖分和长链剖分两种, 阅读全文
posted @ 2025-08-20 20:40 Alkaid16 阅读(36) 评论(0) 推荐(0)
摘要:问题引入 洛谷模板题 P1656 给定一个无向连通图,已知没有重边、没有自环。求图中的所有桥。 桥是什么? 桥(也称为割边)是指在无向图中,删除某条边后,图的连通分量数量增加的边。 这道题可以用Tarjan算法求强连通分量来完成,也可以用如下算法解决: 求桥算法 DFS的过程中,将所有经过的边存在一 阅读全文
posted @ 2025-08-19 21:47 Alkaid16 阅读(40) 评论(0) 推荐(0)
摘要:扩展欧几里得算法 引入 欧几里得定理告诉我们:\(\gcd(a, b) = \gcd(b, a \mod b)\)。 扩展欧几里得算法,常用于求\(ax + by = \gcd(a, b)\)的一组可行解。 当\(b = 0\)时,解为\(x = 1, y = 0\)。 否则: 推理 设 \(ax_ 阅读全文
posted @ 2025-08-18 15:17 Alkaid16 阅读(28) 评论(0) 推荐(0)
摘要:P11003 [蓝桥杯 2024 省 Python B] 蓝桥村的真相 题目链接 题目链接 题目描述 在风景如画的蓝桥村,\(n\) 名村民围坐在一张古老的圆桌旁,参与一场思想 的较量。这些村民,每一位都有着鲜明的身份:要么是誉满乡野的诚实者,要么是无可救药的说谎者。 当会议的钟声敲响,一场关于真理 阅读全文
posted @ 2025-08-15 15:48 Alkaid16 阅读(62) 评论(0) 推荐(0)
摘要:P1896 [SCOI2005] 互不侵犯 题目链接 洛谷题目链接:互不侵犯[P1896] 题目描述 在 \(N \times N\) 的棋盘里面放 \(K\) 个国王,使他们互不攻击,共有多少种摆放方案。国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共 \(8\) 个格子 阅读全文
posted @ 2025-08-14 15:24 Alkaid16 阅读(23) 评论(0) 推荐(0)
摘要:前言 线段树用于解决需要区间查询、区间修改的问题。 定义可以参考Morphis老师的博客:线段树博客。 例题 线段树例题 该题要求同时实现“加法”和“乘法”两个运算,所以需要\(add\)和\(mul\)两个懒惰标记。 过程 建树 建树流程都是一致的。 void build(i64 s, i64 t 阅读全文
posted @ 2025-08-14 14:19 Alkaid16 阅读(37) 评论(1) 推荐(1)