Summary
有意思的是, 难度诈骗居然在我身上打出了暴击.
(首先还是吐槽一下 5h 的模拟赛因为早读和早课变成 4h 这档事, 确实比较乱节奏.)
A 题签得挺快. B 被论文诈骗根本没有从过题角度思考. C 确实傻了, 感觉形式很想 Boruvka 就可劲儿编做法, 发现做不来可劲儿写 LCT, 最后得到了暴力 Kruskal 的乞丐分.
强制每到题用一个固定的时间思考满分算法或许是不错的选择. 毕竟不过几题垫底就稳了.
A∼ 轻松的音乐
给定 {pn},{an}, 对于每个 i, 其可以用一个区间覆盖 [i−pi,i) 或者 (i,i+pi], 求未必覆盖的 a 之和的最小值.
n≤5×104, m:=max{pi}≤30.
考场上一眼的 O(nm2): 令 f(i,j,k) 表示考虑了 1..i 的区间, 假设 (i−j,i] 被后面的区间覆盖, 当前覆盖到 [i,i+k) 时的最小和. 转移很简单.
这个算法慢在完全用 DP 进行策略优化, 事实上可以加入一些底层贪心. 令 f(i,j) 表示考虑了前 i 个区间, 覆盖到 j 的最小和. 仍然是讨论 i 区间的方向, 简单处理一下转移可以做到 O(nm).
B∼ 论文题
给定 {an}, 初始有 ai 个颜色为 i 的球. 每一时刻在所有球中均匀随机两个不同且有序的球 x,y, 将 x 的颜色变为 y 的颜色. 求所有球同色时的期望时刻. 答案模 (109+7).
n≤2.5×103, m:=max{ai}≤105.
Tags:「A.DP-概率/期望 DP」「B.Tricks」
法一 上势能. 设 A 为一个局面下颜色的出现次数集合, 定义
Φ(A)=∑a∈Aφ(a).
这里做出了把势能摊到每种颜色上的初步转化. 令常数 s=∑a∈Aa, 考虑一次操作得到的 A∗:
Φ(A∗)=∑a∈Aa(a−1)+(s−a)(s−a−1)s(s−1)φ(a)+a(s−a)s(s−1)(φ(a−1)+φ(a+1)).
我们自然希望 Φ(A∗)=Φ(A)−1. 为了研究 φ 而不是 Φ, 可以把常数 −1 正比于 a 地摊到每个 φ(a) 上, 然后令变化前后对应的 φ 值两两相等. 化简后得到:
2φ(a)=φ(a−1)+φ(a+1)+s−1s−a.
这个还是比较好算. 引入差分 δ(a)=φ(a)−φ(a−1), 则:
δ(a+1)=δ(a)−s−1s−a,δ(0)=0.
我们得到了递推势能的方法. 对于终结状态 At={s},
Φ(At)=φ(s)=−s∑i=1∑j<is−1s−j=−s∑j=1s−1=−s(s−1).
最终 Φ(A0)−Φ(At) 就是答案了. 线性求逆元可以做到 O(n+m).
对于势能法奏效的数理基础, 可以参考 21 年论文《鞅与一类关于停时的概率与期望问题》.
法二 更加机械化的做法. 还是设 s=∑ai, 令 f(x) 表示最初有 x 个球拥有被钦定的最终颜色时, 所有球都变成这一颜色的期望时刻 (钦定失败则令时刻为 0), 那么
f(x)={0x=0∨x=sx(x−1)+(s−x)(s−x−1)s(s−1)f(x)+x(s−x)s(s−1)(f(x−1)+f(x+1))+1,otherwise.
然后和法一一样初等地算一算就行.
C∼ 最小生成树
给定 {an} 和边集 E={(u,v,w)m}, 进行 q 次修改, 每次令 ax←y, 随后求出 G=([0..n],E∪{(0,i,ai)}ni=1) 的 MST 边权和.
n,m,q≤3×105.
Tags:「A.图论-生成树」「B.Tricks」
在 E 中加入足量 +∞ 边使其能让 G 连通. 取 E 构成的 MST, 维护出 Kruskal 算法的等效链 (树转链, 两个图上 Kruskal 的表现相同).
现在只需要对于链求答案. 线段树维护区间上一个 f(0/1,0/1) 信息, 表示区间左侧连通块是否与 0 连通, 右侧连通块是否与 0 连通, 此时的最小代价. O((n+m)log(n+m)+qlogn).
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现