# 考试题
# 2022-0221 yyl
考虑带权重心的条件,其子树和一定要大于等于 ,这是因为要考虑其父亲的那棵树。
然后要求深度最小的重心,也就是严格大于
考虑把树拍平到 dfn 上,则 dfn 序列上的带权中点一定在重心的子树内。
于是直接倍增即可。
# 2022-0221 dfs
十分有意思的做法完全忘记了…
考虑 个点至多 个匹配,且每个点度数不超过 ,考虑在所有 之间连上一条边,这样每个点度数就不超过 了,形成了若干环和链。
考虑我们已知信息中 是一定连在一起的,于是把他们看成一个点, 统计连成的环和链的个数。
大概是,两个状压,然后因为要保证不算重,所以要钦定此时链 / 环内最大的元素,合并答案就做个枚举子集就好了。
因为合并了点,所以复杂度是 乘上一些东西的。
# 2022-0222 game
每个人希望自己走的比另一个人多走几步
预处理从每个点出发,能比别人多走几步
预处理十分玄妙,也可以看做一个 dp
1 | foR (u, n, 1) for (auto v : to[u]) |
背包合并即可
# 2022-0222 perm
nb 题
先转换一步限制,任意区间内,不能存在 而不存在 。
你看这个二元组的排列,十分不好看,于是你看做一条条边。
限制就相当于是任意区间内的边拿出来具有传递性。
任意区间内限制不好满足,但发现区间 满足传递性其实只要保证 满足就好,也就是只要保证每个前缀满足,每个后缀满足就好。
也就是对于一个前缀建图,它的补图也满足具有传递性就好。
一个 DAG ,本身与补图都具有传递性,这样的图是不多的,只有 个,原因是你可以把每个排列与一张这样的图做一个双射关系,大概是你拿出一个排列来,对于每个逆序对连边,因为两两偏序关系唯一,发现这样的图就是满足本身与补图都具有传递性的,
然后你就可以对于每个排列 dp 了,使用康拓展开给排列编号,从逆序对小的转移到逆序对大的,每次转移新加一条边,也就是找到一个 将其交换,根据逆序对的性质我们知道这恰好变化 。
复杂度 。
# 2022-0224 藏弓待用
。。。套路题不想讲
记下来是因为这是我搬过的一道题,但赛时转换错了一个 “经典模型” 自闭了一场。。。最后 10min 才冲出来
分块优化 ddp
# 2022-0224 山泽麟迹
先考虑一个柿子:
暴力高消可以获得?分
由于这是棵树,在树上有明显的序,考虑 时, 已经算出,把 看做 的形式,原柿化为:
手玩一下即可。
# 2022-0224 降众天华
随便选个点,每个点到他得到若干向量
把向量看成高斯整数 gcd 后,发现可以构造一个方阵是的两边的基底是 ,于是每组向量除 gcd 得到最大最小值,得到长宽
# 2022-0225 给国与地震
发现一个显然正确的贪心,每次找一条满足条件的字典序最小的合法边加入
发现这样会 T,发现一条边若还差 合法,而两边增加量 他不会合法,于是给每条边设一个阈值 ,搞个 记录每个联通块出边,每次启发式合并时找到增加量达到阈值的边进行 check ,若不满足则更新阈值
# 2022-0228 排列
厉害题!
首先期望是个假期望,乘个
这个 次方不好处理,于是考虑它的组合意义,相当于是,对于所有的谷,我们在其中选择 个的方案数,可以重复选。
注意这里我们把对于每个排列贡献求和转换为了对于谷选 k 个排列方案数的求和,于是接下来的讨论我们不需要考虑没被选择的谷对于原柿子的贡献,这里笔者产生过误区
我们把被选中的谷拿出来组成一个集合,由于可以重复选,这个集合的大小是小于等于 的,我们可以 dfs 这个集合的大小,除去这个集合的用个组合数可以简单解决,dfs 时,我们每次要 dfs 一个连续谷段的大小,它的贡献是给 个数字填入 的序列中且满足谷性质方案数,因为 ,简单爆搜可得一个表
1 | 2q+1:Ans |
# 2022-03-01 寄
dp 技术不够高超所以寄了
设 表示 节点子树内 个节点未匹配都汇聚到 的最小代价,设 表示 节点内所有节点都已匹配,从外部来的点都会在 这个中转站被解决的最小代价, 的转移就是 naive 的背包, 的转移则考虑新加入一棵子树时,在原子树枚举一些点在新子树内被解决,在新子树枚举一些点在原子树被解决…
注意最后要用 来转移 f_
每对点会在其 lca 被枚举到,正确性可以保证,复杂度
# 2022-03-01 摆
由于没什么线代基础所以摆了
考虑这个矩阵
考虑拆成两个矩阵
就是一个上三角矩阵了
然后:
发现 这个其实拆成每个 行选择一个 b\or v 乘在一起,其实可以理解为一些矩阵的行列式,考虑把枚举排列转换为枚举矩阵,然后原式变为:
矩阵的每一行要么是 中的一行,要么是 中的一行,发现若两行全是 的一行, ,于是:
枚举哪行变成了 ,则对此行高斯消元后得到的 乘上其余就是答案。
考虑如何计算 ,这里我只会感性理解,大概是算 一行,利用 的 递推,可得递推式:
设 ,然后
现在我们希望求 的前缀和 使用杜教筛构造一个 ,于是:
这个 构造得很好,于是:
后面需要一个整除分块,我们还要快速预处理出一些
观察这个柿子,发现 只与本质不同质因子出现次数集合有关 ,比方说 他们的 值是一样的。
于是我们为每个数字找到一个最小的 ,这个线性筛时可以递推解决
然后对于更大的 ,我们使用记忆化搜索递归解决。
# 2022-03-01 润
打表找规律发现奇怪的结论然后大力 ds
# 2022-03-03 A
题意容易转换为选出最少的集合使得内部 ,发现答案最多为 ,枚举一个集合大小 考虑容斥,设 表示选了 个元素,其中 为所有数字因数的方案数,显然等于 其中 为 的倍数在集合中的数字。
设 表示 为 gcd 方案数,有容斥: 。
的处理都可以使用 dirclet 后缀和。
# 2022-03-04 打麻将
对于一个 ,将所有满足子树直径 ,而所有儿子的子树直径小于 的点丢进队列,显然两两之间不会有祖先关系,每次选出一个最深的点,加入答案,删除这个点的子树,再倍增跳到第一个满足条件的位置加入队列。
这样贪心是显然对的,而删除一个点的子树,维护子树内的直径,可以使用线段树 + O1lca
# 2022-03-04 线性代数
诈骗题
不要想到什么矩阵的无穷次幂是否收敛
矩阵看做邻接矩阵,无环就行