k 元组与集合取 min/max 碰撞的火花
非常感谢洛谷的推荐题目功能。
举个例子,如果我们要求 起来等于 的 元组个数,该怎么办?
我们可以先做一遍高维后缀和,此时设得到的数组 为是 的超集的数的个数。
我们发现其实我们在 的超集中选任意 个数,这 个数 起来一定是 的超集。所以我们可以 。此时 表示的则是 起来是 的超集的 元组个数。我们发现 实质上可以拆解成 起来是每个是 的超集的 元组个数之和(直接拆就行了,我当时第一次理解的时候理解了半天,太唐了),所以这个东西是一个高维后缀和,我们做一遍高维差分之后就是 起来是 的 元组个数。
所以我们对集合取 或 在集合前后缀上体现的非常明显,基本在高维前/后缀和上转化一下权值再做一遍高维差分就能解决。 元组问题是典型。
例题:P2714 四元组统计
注意到其实 其实就是在约数指数这个集合内取 ,那么做一遍 Dirichlet 后缀和,然后把个数变成 元组的个数,然后再做一遍 Dirichlet 差分即可。
本文作者:xingyu_xuan
本文链接:https://www.cnblogs.com/xingyuxuan/p/18175739
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步