杂题选做1
杂题选做1
[ARC112F] Die Siedler
注意到如果存在某一个
考虑一组选取牌堆的方案
考虑什么样的
得到
记录
考虑一个比较有意思的事情,因为有效的
那么
这个容易想到根号分治。
事实上,在
[ABC348G] Max (Sum - Max)
首先肯定将元素按照
性质:记录 表示 的时候,最优解中 的值,则 。
证明:假设存在两个
所以我们可以考虑决策单调性,问题转化为如何快速求出
时间复杂度
[ARC111F] Do you like query problems?
答案是求和,所以我们可以对于每一个位单独考虑。就是求
现在考虑一个
综上,我们枚举
设
给出一个解释:
,这是表示在操作 和询问 之后的操作可以随意做。 。其中 表示第 次询问的时候,包含 的询问区间总数; 表示第 次取 操作的方案数, 是因为要求 。 表示 之间的操作的方案数。考虑求出不合理的那些操作有哪些?一定是包含 的区间,所以具有 的系数。注意到 的 操作不合法,有 种可能性; 的取 操作不合法,因为违背了 是 操作之前第一个 的取 操作的定义,所以有 种可能性。一共就是 种可能性。
现在这个公式是
优化1
注意到公式和
现在优化到了
优化2
将和
最后一个循环如果令
现在优化到了
优化3
发现
前面的一坨是系数,我们不关心。我们拿出后面的式子出来看:
拆分为两个部分:
还有
第一部分是一个等比序列求和,第二部分也是一个等比序列求和。
所以被优化到了
[CF875F] Royal Questions
给出一个十分自然的做法,可能吧。
这个题目很容易想到带权二分图匹配,因为数据规模过大,考虑使用模拟费用流的手段解决。
建模比较简单:
-
源点向公主
连流量为 ,费用为 的边。 -
公主
连向一个辅助节点 ,费用为 ,流量为 。 -
辅助节点
连向 两位王子表示的节点,费用为 ,流量为 。 -
王子
向汇点连流量为 ,费用为 的边。
对于第一个样例,建模如下:
跑最大费用最大流就是答案了。
我们分析每一次找到的增广路的形态。
-
因为过程中不会出现正权环,所以没有必要经过相同的节点两次。这一点十分重要,意味着流一旦到达了
就不会回头。 -
整张图有非
费用的边只有 连向 的这些边,也就是说一旦到达 就决定了整条路径的费用。
既然如此,我们可以将公主们按照
考虑第一次增广带来的影响。原来是这样的:
假设增广的时候选择了
注意到此时
并且因为
我们观察到一个十分重要的性质(其实也很好发现,手玩一下样例即可),就是 二类边在任意时刻构成的图等价于一棵树 。这是为什么呢?假设不是一棵树:
假设产生
如果
所以任意时刻二类边都应该是一棵树才对。
具体流程就是对于嫁妆从大到小的每一位公主:
分别考虑
-
直接到达汇点。
-
通过二类边走到一个可以到达汇点的节点。
如果是第一种情况是容易处理的,直接添加一条
但是如果是第二种呢?会产生什么影响?通过对于“二类边构成的图等价于一棵树”的证明时使用的图,你就会发现影响就是将一条到根的路径反向。给出一个更具一般性的例子。
其中公主
具体修改就是反向了
有没有更简单的方法?
首先对于反向
现在的问题就是如何找到某一位王子所在的内向树的根,使用并查集就可以了。上述将某个并查集的根的父亲设为另一个节点也是并查集的模板操作。
时间复杂度
提醒:可能出现
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?