杂题选做2
杂题选做2
P4298 祭祀
答案分为三部分:求出答案,构造反链,求出一个点是否可能出现在最长反链上。
求出答案
首先,最长反链的值和最小可重链覆盖是等价的。
我们熟知的网络流
为了达成这一点,我们只需要对原图求传递闭包,然后使用网络流
构造反链
为了避免后面出现一些歧义,我们回顾不可重链覆盖的方法:
- 将每一个点拆分为
。所有的 看作二分图的左部, 看作二分图的右部。 - 假设
可以直接或者间接到达 ,则 之间连一条边。
答案为
减去最大匹配的原因可以理解为,一开始每一个节点都是一个独立的链,而一条匹配边相当于对于两条链合并。
为了构造反链,我们需要先构造 最小点覆盖
假设求出了最大匹配,知道了哪些节点被匹配了。接下来从右部点中没有被匹配的那些点出发,开始dfs,但是只允许经过非匹配边到达左部点;如果dfs当前在一个左部点,那么只允许经过匹配边到达右部点。
最终取左部被dfs到的点,右部点没有被dfs到的点,这个就是最小点覆盖集合
证明:
。明确一点,就是 中的节点都是被匹配的节点。其实 的原因就是每一条匹配边,都有恰好一个端点存在与 中。
- 不会出现某一条匹配边,两端都没有被加入到
。这相当于左部没有被dfs到,右部被dfs了。而右部作为匹配点,被dfs到无非是左部经过一条匹配边到达的,而现实是左部没有被dfs到。 - 不会出现某一条匹配边,两端都被加入到
。这相当于左部被dfs到,右部没有被dfs。但是当左部被dfs到的那个时刻,就会沿着匹配边去dfs到右部点,所以这不可能。
中的点可以覆盖到所有的边。假设存在某一条边,两端的节点都不在 中,也就是说,左部点没有被dfs到,右部点被dfs到了。分析一下,这种情况下,这条边只能是一条匹配边(不然这个左部点就会被dfs)。既然是一条匹配边,右部点是不可以作为dfs的起点的,仅可以通过相应左部点走匹配边到达,而这个左部点并没有被dfs,所以这种情况不可能出现。
接下来构造 最大独立集 ,其实就是最小点覆盖的补集。
最后构造 最长反链 。对于每一个节点,如果
证明:
-
是合法的反链:如果不合法,就存在两点
,使得 和 之间有边。两点都被加入到最大独立集,意味着 都不在最小点覆盖中。如果 之间有边,那么最小点覆盖就不合法了。所以他们之间没有边。 -
大小正确。令
表示最大独立集, 表示构造出的反链。已经知道的是 ,需要证明的是 。
-
一个下界:考虑
意味着什么? 或者 有一个不在 中的点的个数,肯定不超过 个。也就是说 ,进而 。 -
一个上界:
再大,不会比 大。对于每一条匹配边,都会导致某一个 或者 没有出现在最大独立集中。
所以
求出可能出现在最长反链中的点
暴力枚举某一个点
时间复杂度
CF2048G Kevin and Matrices
不可能出现:
所以题目要求的等价于:
枚举这个权值
理由简单。
我们只需要容斥求出答案:
我们现在来求
后面部分可以使用二项式定理优化:
单次求解
QOJ8428 Partition into Teams
这个问题除了平局之外是具有对称性的,我们肯定是求平局的数量更好求。容易知道平局的数量为:
但是这个组合公式没有明显的优化方案。注意到本题模数
进行数位dp ,设
最终答案为
QOJ7302 Walk of Length 6
题目要求求出非简单的
- 长度为2的链:直接枚举
。 - 长度为3的链:枚举其中的某一条边,两一条边用度数计算
。 - 长度为4的链:枚举中间那条边,用度数计算另外两条边。使用 bitset 去掉三元环的情况。时间复杂度
。 - 简单三元环:枚举其中某一条边,bitset计算可能的第三点的数量
。 - 简单四元环:枚举对角线上的两个点,bitset计算可能的另外两点的数量
。 - 大小为4的菊花图:枚举菊花图的根,然后用度数算。时间复杂度
。 - 简单四元环带小尾巴:枚举某一条对角线,钦定对角线上某个点具有小尾巴。其余方法和四元环一样,时间复杂度
。 - 简单四元环+对角线:枚举对角线,其余方法和四元环一样,时间复杂度
。 - 两个交集大小为
的三元环:先求出交点数量为 的情况,方法同简单三元环;去掉交点数量为 的情况,方法同简单四元环+对角线。时间复杂度 。
发现每一种都可以在
QOJ1277 Permutation
写一个爆搜或者凭直觉发现,如果一个排列
考虑一个暴力:设
- 假设
,如果存在两个元素 ,使得 且 ,则说明存在一个等差序列。
现在获得了一个
考虑去除掉无用状态,速度有明显提升,但是依然无法通过
QOJ4283 Power of XOR
首先,问题要求
经过一定的思考,发现本问题并不容易折半,考虑线性基。设线性基的大小为
如果
但是如果
for(int i=0;i<=62;i++)
for(int j=i-1;j>=0;j--)
if(p[i]>>j&1) p[i]^=p[j];
那么这样的线性基有什么特点呢?有
两种做法综合一下即可通过本题。
CF1383F Special Edges
根据本题的数据范围,本文认为
动态修改
设
如果直接暴力枚举删不删一条边,接下来暴力跑网络流,时间复杂度是
这个做法的缺陷在于哪里呢?假设我们求出了
总体时间复杂度
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?