12 2021 档案
摘要:首先对于排列的每个数,只有部分数会对 产生贡献。 所以不难得到一个直接 DP 的方法,我们定义状态 表示 左边选了 个, 右边选了 个, 结尾是 "HI" 还是 "LO",产生了多少 "HILO"。但
阅读全文
摘要:来自的省选复习计划中的二分图/网络流。 【模板】二分图最大匹配 给定一个二分图,需要找出最多的不相交的边。 比较简单的方法是匈牙利算法,每次找增广路然后直接增广即可。时间复杂度是。 #include<cstdio> #include<c
阅读全文
摘要:来自的省选复习计划中的虚树/长链剖分。 虚树和长链剖分都可用于一类 树形 的优化。 Part 1:虚树 特点,多次询问,每次询问包括树上的个点, 在可承受范围内。 对于每个询问,只包括
阅读全文
摘要:来自的省选复习计划中的矩阵/线性基。 P3390 【模板】矩阵快速幂 模板。 矩阵乘法是的,快速幂是,总的时间复杂度为。 #include<bits/stdc++.h> #define rep(i,a
阅读全文
摘要:来自的省选复习计划中的生成树。 P3366 【模板】最小生成树 从小到大排序,能加边则加边。 结论:任意一条没有加的边,最小生成树上和之间路径上的边权一定不大于当前边的边权。 证明:反正,如果存在一条大于,我们可以加入当前边而删去最大
阅读全文
摘要:来自的省选复习计划中的树上问题。 树上问题是中必考的难点。 P5018 [NOIP2018 普及组] 对称二叉树 判断带点权有根二叉树是否同构。 因为有根且是二叉树,这极大简化了判断同构的过程。 我们定义函数 bool check(int x
阅读全文
摘要:来自的省选复习计划中的基础多项式。 P3803 【模板】多项式乘法(FFT) 快速傅里叶变换,时间复杂度。 #include<bits/stdc++.h> #define rep(i,a,b) for(int
阅读全文
摘要:P3387 【模板】缩点 算法求线性求强连通分量。 算法的核心在于时间戳和栈的维护。 我们将每个强连通分量缩成一个点,将得到一个有向无环图,就可以在上面跑。 #include<bits/stdc++.h> #define rep(i,a
阅读全文
摘要:来自的省选复习计划中的组合数学。 由于作者非常菜所以只能随便写点基础的。 P3197 [HNOI2008]越狱 简单数数。越狱的方案数等于总方案数减没有越狱的方案数。 所以 。 #include<bits
阅读全文
摘要:来自的省选复习计划中的分治算法。 分治,顾名思义,分而治之,一般能将 的时间复杂度优化至 或。 P7415 [USACO21FEB] Count the Cows G 观察一个对于边长为$3^n
阅读全文
摘要:才知道有这么个神奇的玩意。 定义, 个点,任意两点之间存在且恰好存在一条有向边的图成为 阶竞赛图。 性质 :一定存在一条哈密顿路径。 证明:数学归纳法, 显然成立,当 成立时的哈密顿路径,存在相邻两点,使得 \
阅读全文
摘要:G 想到一个非常神奇的做法。 如果我们令第 个位置放入了 个球,那么总代价一定是 。 总方案数是 ,我们只用求所有方案的代价之和。 对于一个代价,我们将它拆开,组合意义等价于选出一些 ,剩下的选 \(b_
阅读全文
摘要:给定一个 的数字矩阵,一共走 步,任选一个起点,奇数步可以移动到同行的一个点,偶数步移动到同列的一个点,将路径上的数记录下来得到一个长度为 的序列(不包括起点),问有多少种可能的序列。 观察到行数和列数很小,考虑可以状态压缩。 经过思考后我们可
阅读全文
摘要:下午 3 点肝到晚上 7 点,确实毒瘤。 思维难度不是很大? 首先对于 边直接特判处理。 观察部分分,如果不存在 边,我们直接用 set 维护每个点只走 能够到达的最右端和最左端即可,非常好写。 如果不存在 边,我们需要维护 边能到达的
阅读全文