reset
考虑随机游走状的高斯消元:对于题目中的一个可重集 ,令 表示,从 开始期望多少天后走到和 的集合。
则有两种转移,分别对应摆烂或不摆烂:
(定义多重集减一个数为该集合去除一个该数, 为多重集中最小元素, 为两个多重集并)
暴力可以依据这个式子高斯消元,可以求出每个 。
考虑把状态之间的依赖关系画出来,容易发现这是一棵树,即 对应 在状态树上的父亲, 对应它的每个儿子。
则即
此树的叶子即为和 的状态。
如果状态数比较少,我们可以从叶子开始向上推出每个节点的 ,但这里显然状态数很大很大。
注意到对于一个状态 ,如果 的最小值、和是确定的,它的子树形态也是确定的。
那么将所有 相同的节点归为一个等价类,这样一共有 个等价类。
但是一个等价类内的 是不一样的。我们发现一个等价类的儿子是确定的等价类(们),但是父亲是不确定的,因为不知道一个多重集去除最小值后最小值是否改变。
即便如此,观察 式,对于 的等价类的节点,他们不存在儿子节点,因此 。即 和 间存在一次关系式。
归纳地,对于一般的节点 ,若知道了 和每个儿子的 的一次关系式,我们可以将这个关系代入 式,消去所有和儿子有关的未知量,得到 和 的一次关系式。
因此,对于同一等价类中的所有节点,他们的 和其父亲的 存在固定的一次关系。
若我们求出了每个等价类的这个一次关系,则由于询问的 到根的路径是可以求出的,我们由根的 递推到 的 就解决了此题。
求所有关系是相对容易的,对于状态 ,子状态形如 ,其中 。
假设一次关系形如 ,则要求的就是 以及 。
前缀和优化即可,复杂度 。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现