摘要: 狄利克雷卷积&莫比乌斯反演入门 狄利克雷卷积 数论函数 数论函数指一类定义域是正整数,值域是一个数集的函数。 加法:\((f+g)(x)=f(x)+g(x)\) 数乘:\((xf)(n)=x*f(n)\)​ 定义 定义两个数论函数的狄利克雷卷积*: 若 \(t=f*g\) 则 \(t(n)=\Sig 阅读全文
posted @ 2025-07-03 21:53 Hirasawayuiii 阅读(12) 评论(0) 推荐(0)
摘要: [线段树系列 #1] 扫描线 核心思路 将矩形分割为这样: 对于每条竖向边,将y轴上的区间作为数据结构维护对象,从小到大遍历每个x(即可理解为从左到右扫描一遍),即可将分割图形的行为抽象为简单的数据结构操作。 例题 例题:P5490 【模板】扫描线 & 矩形面积并 以扫描线从上到下扫为例具体来说,是 阅读全文
posted @ 2025-05-03 10:33 Hirasawayuiii 阅读(7) 评论(0) 推荐(0)
摘要: Kruskal重构树 学习笔记 Kruskal重构树 基本思想 对于一个无向图,将每条边按边权升序排序。对于每一条边,若该边两点不在同一个连通块,新建一个节点向该边的两点建边,点权即为原边边权。最后建成一棵重构树。 举例:(原图来自rui_er Kruskal 重构树学习笔记) 性质 1.重构树是一 阅读全文
posted @ 2025-03-15 15:35 Hirasawayuiii 阅读(11) 评论(0) 推荐(0)
摘要: P10507 Georgia and Bob 题解 题目链接 题目大意 一个一行的棋盘,棋盘上有 \(n\) 个棋子,两人轮流选择一枚棋子向左移动若干格(会被其他棋子阻拦),询问谁必赢。 解题思路 显然为博弈论。注意到对于两个相邻(指棋子,不是位置)的棋子,若先手移动了左边的棋子若干格,后手也能移动 阅读全文
posted @ 2025-02-08 11:59 Hirasawayuiii 阅读(13) 评论(0) 推荐(0)
摘要: P10506 魔法珠 题解 题目链接 题目大意 \(n\) 堆物品,分别有 \(a_1,a_2,...,a_n\) 个。两人轮流选择一堆数量大于 \(1\) 的物品,将其分解为他的所有因数,再选择这些因数中的一堆删除。当有人无法操作(物品数量皆为 \(1\))时另一人胜利。 解题思路 显然本题是博弈 阅读全文
posted @ 2025-02-07 10:00 Hirasawayuiii 阅读(22) 评论(0) 推荐(0)
摘要: P10496 The Luckiest Number 题解 题目链接 题目大意 给定一个数字 \(L\),求仅由 \(8\) 组成的数字且是 \(L\) 的倍数的正整数中的最小值的位数。 解题思路 对于由 \(x\) 位 \(8\) 组成的数字,可以将其表示为 \(\frac{8}{9}(10^x- 阅读全文
posted @ 2025-01-21 07:58 Hirasawayuiii 阅读(36) 评论(0) 推荐(0)
摘要: [ABC222G] 222 题解 题目链接 题目大意 给定一个数字 \(L\),求仅由 \(2\) 组成的数字且是 \(L\) 的倍数的正整数中的最小值的位数。 解题思路 对于由 \(x\) 位 \(2\) 组成的数字,可以将其表示为 \(\frac{2}{9}(10^x-1)\),故原题转化为求满 阅读全文
posted @ 2025-01-21 07:58 Hirasawayuiii 阅读(28) 评论(0) 推荐(0)
摘要: 数论 线性筛 枚举倍数 int p[N], f[N], idx; void sieve(){ n = read(), f[0] = f[1] = 1; for(int i = 2;i <= n;i++){ if(!f[i]) p[++idx] = i; for(int j = 1;j <= idx 阅读全文
posted @ 2025-01-18 09:56 Hirasawayuiii 阅读(106) 评论(0) 推荐(1)
摘要: 树链剖分 基本架构 原理:将树以一种划分方式分成若干条链,转换为区间,再用数据结构维护 一般形式:两遍dfs初始化+数据结构(线段树/树状数组) 解决的问题:各种树上区间操作(维护的东西越多,解决问题的范围就越大) 两遍dfs维护的: $fa$[ ](父节点) $son$[ ](重儿子) $dep$ 阅读全文
posted @ 2025-01-17 17:54 Hirasawayuiii 阅读(27) 评论(0) 推荐(0)
摘要: Splay 操作: 旋转: 旋转之后,各点依然要满足BST性质。如果一个结点是它父亲的左儿子,要右旋,如果是它父亲的右儿子,要左旋。 1. 将y的左儿子设为x的右儿子 2. 若x的右儿子存在,将x的右儿子的父亲设为y` 3. 将X的右儿子设为y 4. 将y的父亲设为x 5. 将x的父亲设为z 6. 阅读全文
posted @ 2025-01-17 17:51 Hirasawayuiii 阅读(12) 评论(0) 推荐(0)